From 283d82bfce775ee793b9aa6db3280364193e9034 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Tue, 14 Mar 2023 11:53:27 +0100 Subject: [PATCH 1/4] French law JS must be created with a dune release profile --- Makefile | 2 +- french_law/js/french_law.js | 134358 ++------------------------------- 2 files changed, 7573 insertions(+), 126787 deletions(-) diff --git a/Makefile b/Makefile index 7703d021..ab414c5e 100644 --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ run_french_law_library_benchmark_js: build_french_law_library_js #> build_french_law_library_js : Builds the JS version of the OCaml French law library build_french_law_library_js: - dune build $(FRENCH_LAW_JS_LIB_DIR)/french_law.js + dune build $(FRENCH_LAW_JS_LIB_DIR)/french_law.js --profile=release #> build_french_law_library_web_api : Builds the web API of the French law library build_french_law_library_web_api: build_french_law_library_js generate_french_law_json_schemas diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index 7c9fa82c..66c2c567 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,126786 +1,7572 @@ -//# 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_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("; "), - cst$7=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$8=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$14=caml_string_of_jsbytes("]"), - cst$15=caml_string_of_jsbytes("["), - cst_expected_variable_definiti= - caml_string_of_jsbytes - (" ]): expected variable definition (function output), found: "), - cst$16=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$17=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=caml_string_of_jsbytes("input"), - cst_output$0=caml_string_of_jsbytes("output"), - 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(", "), - 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_fun_inputs=caml_string_of_jsbytes("fun_inputs"), - 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.IndivisibleDurations"), - 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, - Assert_failure=global_data.Assert_failure, - Stdlib_ListLabels=global_data.Stdlib__ListLabels, - 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(115,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@]")], - _ae_=[0,0], - _af_=[0,0], - _ag_=[0,0], - _ab_=[0,0,0], - _ac_=[0,caml_string_of_jsbytes("runtimes/ocaml/runtime.ml"),512,19], - _ad_= - [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)], - IndivisibleDurations= - [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 _cM_=caml_call1(Q[9],100),_cN_=caml_call2(Q[40],d,_cM_); - return caml_call1(Q[29],_cN_)} - function money_to_string(m) - {var - _cI_=caml_call1(Q[9],100), - _cJ_=caml_call1(Q[8],m), - _cK_=caml_call2(Q[55],_cJ_,_cI_), - _cL_=caml_call1(Q[35],_cK_); - return caml_call2(Stdlib_Format[133],_a_,_cL_)} - 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 _cG_=runtime.ml_z_sign(units),_cH_=caml_call2(Z[52],units,_cG_); - return caml_call2(Z[54],_cH_,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), - _ct_=caml_call1(Q[16],i), - n=caml_call1(Z[10],_ct_), - _cu_=caml_call1(Q[17],i), - d=caml_call1(Z[10],_cu_), - 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 _cF_(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],_cF_,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 _cv_=leading_zeroes(digits[1]); - if - ((caml_call1(Stdlib_List[1],digits[1]) - _cv_ | 0) - < - max_prec_digits) - {n$0[1] = caml_call2(Z[14],n$0[1],10); - var _cw_=digits[1]; - digits[1] = [0,caml_call2(Z[18],n$0[1],d),_cw_]; - n$0[1] = caml_call2(Z[19],n$0[1],d); - continue}} - var - _cx_=leading_zeroes(digits[1]), - _cy_= - (caml_call1(Stdlib_List[1],digits[1]) - _cx_ | 0) - === - max_prec_digits - ?cst - :cst$2, - _cz_=caml_call1(Stdlib_List[9],digits[1]), - _cA_= - function(fmt,digit) - {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)}, - _cB_=[0,function(fmt,param){return 0}], - _cC_=caml_call2(Stdlib_Format[123],_cB_,_cA_), - _cD_=Z[36], - _cE_=0 <= sign?cst$0:cst$1; - return caml_call7 - (Stdlib_Format[133],_d_,_cE_,_cD_,int_part,_cC_,_cz_,_cy_)}} - function decimal_round(q) - {var - n=caml_call1(Q[16],q), - d=caml_call1(Q[17],q), - _cq_=caml_call2(Z[54],2,d), - _cr_=caml_call2(Z[54],2,n), - _cs_=runtime.ml_z_fdiv(caml_call2(Z[52],_cr_,d),_cq_); - return caml_call1(Q[8],_cs_)} - function decimal_of_money(m) - {var _co_=caml_call1(Q[9],100),_cp_=caml_call1(Q[8],m); - return caml_call2(Q[42],_cp_,_co_)} - 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 _cm_=caml_call3(Dates_calc_Dates[3],year,month,day);return _cm_} - catch(_cn_){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), - _cl_= - 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],_cl_,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], - _ck_= - 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],_ck_,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_fun_inputs=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= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - yojson_of_var_def, - v_fun_inputs), - bnds$1=[0,[0,cst_fun_inputs,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 _cj_=log_ref[1]; - log_ref[1] = [0,[2,info,caml_call1(embed,x)],_cj_]; - 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 _ch_=var$0[3],_ci_=caml_call2(Stdlib_String[6],cst$3,var$0[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _u_, - format_pos_opt, - var$0[1], - _ci_, - format_value, - _ch_)} - 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 - _cg_= - [0, - function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_x_)}]; - return caml_call3(Stdlib_Format[123],_cg_,format_var_def,ppf)} - function format_var_def_with_fun_calls(ppf,var_with_fun) - {var _b$_=var_with_fun[4]; - if(_b$_) - {var _ca_=_b$_[1]; - if(_ca_) - {var - _cb_= - function(ppf,fun_call){return format_event(ppf,[1,fun_call])}, - _cc_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_y_)}], - _cd_=caml_call2(Stdlib_Format[123],_cc_,_cb_), - _ce_=var_with_fun[3], - _cf_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _z_, - _cf_, - format_value, - _ce_, - _cd_, - _ca_)}} - 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],_bZ_=money_to_string(x$0); - return caml_call3(Stdlib_Format[129],ppf,_D_,_bZ_); - case 2: - var x$1=param[1],_b0_=integer_to_int(x$1); - return caml_call3(Stdlib_Format[129],ppf,_E_,_b0_); - case 3: - var x$2=param[1],_b1_=decimal_to_string(10,x$2); - return caml_call3(Stdlib_Format[129],ppf,_F_,_b1_); - case 4: - var x$3=param[1],_b2_=date_to_string(x$3); - return caml_call3(Stdlib_Format[129],ppf,_G_,_b2_); - case 5: - var x$4=param[1],_b3_=duration_to_string(x$4); - return caml_call3(Stdlib_Format[129],ppf,_H_,_b3_); - 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], - _b4_= - function(fmt,param) - {var value=param[2],name=param[1]; - return caml_call5 - (Stdlib_Format[129],fmt,_J_,name,format_value,value)}, - _b5_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_K_)}], - _b6_=caml_call2(Stdlib_Format[123],_b5_,_b4_), - _b7_=caml_call2(Stdlib_String[6],cst$5,name$0); - return caml_call5(Stdlib_Format[129],ppf,_L_,_b7_,_b6_,attrs); - default: - var - elts=param[1], - _b8_=caml_call1(Stdlib_Array[11],elts), - _b9_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_M_)}], - _b__=caml_call2(Stdlib_Format[123],_b9_,format_value); - return caml_call4(Stdlib_Format[129],ppf,_N_,_b__,_b8_)}} - 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], - fun_inputs=match[2], - fun_name=match[1], - _bP_=function(_bV_,_bW_){return pp_events(_Q_,_bV_,_bW_)}, - _bQ_= - [0, - function(fmt,param) - {return caml_call2(Stdlib_Format[13],fmt,cst$6)}], - _bR_=caml_call2(Stdlib_Format[123],_bQ_,format_var_def), - _bS_=caml_call2(Stdlib_String[6],cst$7,fun_name); - return caml_call9 - (Stdlib_Format[129], - ppf, - _R_, - _bS_, - _bR_, - fun_inputs, - format_var_def_with_fun_calls, - output, - _bP_, - body); - default: - var - body$0=param[3], - inputs=param[2], - name=param[1], - _bT_=function(_bX_,_bY_){return pp_events(_S_,_bX_,_bY_)}, - _bU_=caml_call2(Stdlib_String[6],cst$8,name); - return caml_call7 - (Stdlib_Format[129], - ppf, - _T_, - _bU_, - format_var_defs, - inputs, - _bT_, - body$0)}} - var - _bL_= - [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_U_)}], - _bM_=caml_call2(Stdlib_Format[123],_bL_,format_event), - _bN_=is_first_call?_V_:_X_, - _bO_=caml_call2(Stdlib[98],_W_,_bN_); - return caml_call4(Stdlib_Format[129],ppf,_bO_,_bM_,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], - _bC_=caml_call2(Stdlib_String[6],cst$10,name), - _bD_=caml_call2(Stdlib[28],_bC_,cst$9), - _bE_=caml_call1(Stdlib_Printf[4],_Z_); - return caml_call2(Stdlib[28],_bE_,_bD_); - case 1: - var - name$0=param[1], - _bF_=caml_call2(Stdlib_String[6],cst$12,name$0), - _bG_=caml_call2(Stdlib[28],_bF_,cst$11), - _bH_=caml_call1(Stdlib_Printf[4],___); - return caml_call2(Stdlib[28],_bH_,_bG_); - case 2: - var - value=param[2], - name$1=param[1], - _bI_=yojson_of_runtime_value(value), - _bJ_=caml_call4(Yojson[11][5],0,0,0,_bI_), - _bK_=caml_call2(Stdlib_String[6],cst$13,name$1); - return caml_call3(Stdlib_Printf[4],_$_,_bK_,_bJ_); - default: - var pos=param[1]; - return caml_call6 - (Stdlib_Printf[4],_aa_,pos[1],pos[2],pos[3],pos[4],pos[5])}} - function take_while(p,l) - {if(l) - {var t=l[2],h=l[1]; - if(caml_call1(p,h)) - {var match=take_while(p,t),rest=match[2],t$0=match[1]; - return [0,[0,h,t$0],rest]} - return [0,0,l]} - return _ab_} - 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) - {var - match= - take_while - (function(param) - {if(2 === param[0]) - {var - name=param[1], - _bA_=3 === caml_call1(Stdlib_List[1],name)?1:0; - if(_bA_) - {var _bB_=caml_call2(Stdlib_List[7],name,2); - return caml_call2(Stdlib_String[10],cst_input,_bB_)} - return _bA_} - return 0}, - events), - _bw_=match[2]; - if(_bw_) - {var _bx_=_bw_[1]; - if(0 === _bx_[0]) - {var rest=_bw_[2],infos=_bx_[1],inputs=match[1]; - if(is_function_call(infos)) - {var - _by_= - function(param) - {if(2 === param[0]) - {var value=param[2],name=param[1];return [0,0,name,value,0]} - throw [0,Assert_failure,_ac_]}, - fun_inputs=caml_call2(Stdlib_ListLabels[19],_by_,inputs), - body_ctx=parse_events([0,empty,0,rest]), - body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), - output=caml_call1(Stdlib_List[5],body_rev), - _bz_=caml_call1(Stdlib_List[6],body_rev), - body=caml_call1(Stdlib_List[9],_bz_), - rest$0=body_ctx[3]; - if(0 === output[0]) - var var_def=output[1],output$0=var_def; - else - var - output$0= - caml_call1(Stdlib[2],cst_Missing_function_output_va); - return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} - return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} - function parse_events(ctx) - {var ctx$0=ctx; - a: - for(;;) - {var _aX_=ctx$0[3]; - if(_aX_) - {var _aY_=_aX_[1]; - switch(_aY_[0]) - {case 0: - var rest=_aX_[2],infos=_aY_[1]; - if(3 === caml_call1(Stdlib_List[1],infos)) - {if(infos) - {var _aZ_=infos[2]; - if(_aZ_) - {var _a0_=_aZ_[2]; - if(_a0_ && ! _a0_[2]) - {var - var_name=_aZ_[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=_aX_[2],_a3_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_a3_,rest$0]; - case 2: - var rest$1=_aX_[2],name=_aY_[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 _a4_=rest$1[1]; - if(0 === _a4_[0]) - {var infos$0=_a4_[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 _a5_=_aX_[2]; - if(_a5_) - {var _a6_=_a5_[1]; - if(2 === _a6_[0]) - {var - rest$3=_a5_[2], - value=_a6_[2], - name$0=_a6_[1], - pos=_aY_[1], - _aV_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; - if(_aV_) - var - _aW_=caml_call2(Stdlib_List[7],name$0,1), - _a7_=caml_call2(Stdlib_String[14],_aW_,46); - else - var _a7_=_aV_; - if(_a7_) - {if(name$0) - {var _a8_=name$0[2]; - if(_a8_ && ! _a8_[2]) - {var - var_dot_subscope_var_name=_a8_[1], - _a9_= - caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), - name$1=caml_call2(Stdlib_List[7],_a9_,0), - _a$_=ctx$0[1], - v=[0,[0,pos],name$0,value,0], - _a__=ctx$0[2], - match=caml_call2(StringMap[29],name$1,_a$_); - if(match) - var - ls=match[1], - _bv_=caml_call3(StringMap[4],name$1,[0,v,ls],_a$_); - else - var _bv_=caml_call3(StringMap[4],name$1,[0,v,0],_a$_); - var ctx$4=[0,_bv_,_a__,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 - _aT_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, - _aU_= - _aT_ - ?runtime.caml_string_equal - (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) - :_aT_; - if(_aU_) - switch$0 = 1; - else - if(rest$3) - {var _ba_=rest$3[1]; - if(0 === _ba_[0]) - {var infos$1=_ba_[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(;;) - {var - match$2= - take_while - (function(param){return 2 === param[0]?1:0},rest$4), - _bb_=match$2[2]; - if(_bb_) - {var _bc_=_bb_[1]; - if(0 === _bc_[0]) - {var infos$2=_bc_[1]; - if(is_function_call(infos$2)) - {var - match$3=parse_fun_call(rest$4), - fun_call$0=match$3[2], - raw_events=match$3[1], - fun_calls$0=[0,fun_call$0,fun_calls], - fun_calls=fun_calls$0, - rest$4=raw_events; - continue}}} - var fun_calls$1=caml_call1(Stdlib_List[9],fun_calls); - if(rest$4) - {var _bd_=rest$4[1]; - if(2 === _bd_[0]) - var - rest$6=rest$4[2], - value$0=_bd_[2], - name$2=_bd_[1], - var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$1]]], - rest$5=rest$6; - else - var - _be_= - (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) - + - 1 - | - 0, - _bf_=caml_call1(Stdlib[33],_be_), - _bg_=caml_call2(Stdlib[28],_bf_,cst$14), - _bh_=caml_call2(Stdlib[28],cst$15,_bg_), - _bi_=raw_event_to_string(_bd_), - _bj_=caml_call2(Stdlib[28],_bi_,_bh_), - _bk_= - caml_call2(Stdlib[28],cst_expected_variable_definiti,_bj_), - _bl_=caml_call2(Stdlib_String[6],cst$16,infos$1), - _bm_=caml_call2(Stdlib[28],_bl_,_bk_), - _bn_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bm_), - _bo_=caml_call1(Stdlib[2],_bn_), - var_comp=_bo_[2], - rest$5=_bo_[1]} - else - var - _bp_=caml_call2(Stdlib_String[6],cst$17,infos$1), - _bq_= - caml_call2(Stdlib[28],_bp_,cst_expected_variable_definiti$0), - _br_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bq_), - _bs_=caml_call1(Stdlib[2],_br_), - var_comp=_bs_[2], - rest$5=_bs_[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 - _a1_=raw_event_to_string(_aY_), - _a2_=caml_call2(Stdlib[28],cst_Unexpected_event,_a1_); - return caml_call1(Stdlib[2],_a2_)} - var _bt_=ctx$0[3],_bu_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_bu_,_bt_]}} - try - {var _aS_=parse_events([0,empty,_Y_,raw_events]),ctx=_aS_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Stdlib[7])throw exn; - var msg=exn[2]; - caml_call2(Stdlib_Printf[3],_ad_,msg); - var ctx=empty_ctx} - return ctx[2]} - function handle_default(pos,exceptions,just,cons) - {var _aO_=0; - function _aP_(acc,except) - {try - {var _aQ_=[0,caml_call1(except,0)],new_val=_aQ_} - catch(_aR_) - {_aR_ = caml_wrap_exception(_aR_); - if(_aR_ !== EmptyError)throw _aR_; - 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],_aP_,_aO_,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 _aN_(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],_aN_,_ae_,exceptions); - if(0 === except[0]) - {if(0 === just[0])return _af_;var b=just[1];return b?cons:_ag_} - 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), - _aL_=runtime.caml_int_compare(p1_days,p2_days); - return _aL_} - catch(_aM_) - {_aM_ = caml_wrap_exception(_aM_); - if(_aM_ === Dates_calc_Dates[2])throw UncomparableDurations; - throw _aM_}} - function equal_periods(p1,p2) - {try - {var - _aI_=caml_call2(Dates_calc_Dates[15],p1,p2), - _aJ_=0 === caml_call1(Dates_calc_Dates[18],_aI_)?1:0; - return _aJ_} - catch(_aK_) - {_aK_ = caml_wrap_exception(_aK_); - if(_aK_ === Dates_calc_Dates[2])throw UncomparableDurations; - throw _aK_}} - function o_not(_aH_){return 1 - _aH_} - 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(_aF_,_aE_){var _aG_=_aF_?_aE_:_aF_;return _aG_} - function o_or(_aC_,_aB_){var _aD_=_aC_ || _aB_;return _aD_} - function o_xor(_aA_,_az_){return _aA_ !== _az_?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]],_aw_=len - 1 | 0,_av_=1; - if(! (_aw_ < 1)) - {var i=_av_; - for(;;) - {var _ax_=caml_check_bound(a,i)[1 + i]; - r[1] = caml_call2(f,r[1],_ax_); - var _ay_=i + 1 | 0; - if(_aw_ !== i){var i=_ay_;continue} - break}} - return r[1]} - var o_concat=Stdlib_Array[5]; - function o_filter(f,a) - {var - _at_=caml_call1(Stdlib_Array[11],a), - _au_=caml_call2(Stdlib_List[41],f,_at_); - return caml_call1(Stdlib_Array[12],_au_)} - 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 _as_=caml_call1(Dates_calc_Dates[13],dur); - return caml_call3(Dates_calc_Dates[4],0,dat,_as_)} - 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), - _an_=caml_call1(Q[20],i2), - sign_int=runtime.caml_mul(runtime.ml_z_sign(i1),_an_), - _ao_=caml_call1(Q[8],i1_abs), - rat_result=caml_call2(Q[40],_ao_,i2_abs), - _ap_=caml_call1(Q[17],rat_result), - match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_ap_), - remainder=match[2], - res=match[1], - _aq_=caml_call1(Q[17],rat_result); - if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_aq_)) - {var _ar_=caml_call2(Z[12],res,1); - return caml_call2(Z[54],_ar_,sign_int)} - return caml_call2(Z[54],res,sign_int)} - function o_mult_dur_int(d,m) - {var _am_=caml_call1(Z[29],m); - return caml_call2(Dates_calc_Dates[16],d,_am_)} - function o_div_int_int(i1,i2) - {if(caml_equal(Z[2],i2))throw Stdlib[13]; - var _ak_=caml_call1(Q[8],i2),_al_=caml_call1(Q[8],i1); - return caml_call2(Q[42],_al_,_ak_)} - 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 _ai_=caml_call1(Q[8],m2),_aj_=caml_call1(Q[8],m1); - return caml_call2(Q[42],_aj_,_ai_)} - 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_div_dur_dur(d1,d2) - {try - {var - i2=caml_call1(Dates_calc_Dates[18],d2), - i1=caml_call1(Dates_calc_Dates[18],d1)} - catch(_ah_) - {_ah_ = caml_wrap_exception(_ah_); - if(_ah_ === Dates_calc_Dates[2])throw IndivisibleDurations; - throw _ah_} - return o_div_int_int(i1,i2)} - 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_div_dur_dur, - 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_div_dur_dur$0=Oper[44], - o_lt_int_int$0=Oper[45], - o_lt_rat_rat$0=Oper[46], - o_lt_mon_mon$0=Oper[47], - o_lt_dur_dur$0=Oper[48], - o_lt_dat_dat$0=Oper[49], - o_lte_int_int$0=Oper[50], - o_lte_rat_rat$0=Oper[51], - o_lte_mon_mon$0=Oper[52], - o_lte_dur_dur$0=Oper[53], - o_lte_dat_dat$0=Oper[54], - o_gt_int_int$0=Oper[55], - o_gt_rat_rat$0=Oper[56], - o_gt_mon_mon$0=Oper[57], - o_gt_dur_dur$0=Oper[58], - o_gt_dat_dat$0=Oper[59], - o_gte_int_int$0=Oper[60], - o_gte_rat_rat$0=Oper[61], - o_gte_mon_mon$0=Oper[62], - o_gte_dur_dur$0=Oper[63], - o_gte_dat_dat$0=Oper[64], - o_eq_int_int$0=Oper[65], - o_eq_rat_rat$0=Oper[66], - o_eq_mon_mon$0=Oper[67], - o_eq_dur_dur$0=Oper[68], - o_eq_dat_dat$0=Oper[69], - o_fold$0=Oper[70], - Runtime_ocaml_Runtime= - [0, - yojson_of_source_position, - EmptyError, - AssertionFailed, - ConflictError, - UncomparableDurations, - IndivisibleDurations, - 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_div_dur_dur$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(131,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("input0"),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("input0"),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("input0"),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("input0"),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"), - 132, - 11, - 132, - 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"), - 132, - 11, - 132, - 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"), - 142, - 11, - 142, - 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"), - 142, - 11, - 142, - 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"), - 142, - 11, - 142, - 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("input0"),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"), - 130, - 11, - 130, - 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("input0"),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"), - 130, - 11, - 130, - 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"), - 130, - 11, - 130, - 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("input0"),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"), - 130, - 11, - 130, - 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"), - 130, - 11, - 130, - 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("input0"),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("input0"),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"), - 128, - 11, - 128, - 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("input0"),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"), - 128, - 11, - 128, - 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("input0"),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"), - 128, - 11, - 128, - 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("input0"),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"), - 128, - 11, - 128, - 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"), - 128, - 11, - 128, - 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"), - 128, - 11, - 128, - 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"), - 122, - 11, - 122, - 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"), - 122, - 11, - 122, - 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"), - 122, - 11, - 122, - 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"), - 139, - 11, - 139, - 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"), - 139, - 11, - 139, - 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"), - 139, - 11, - 139, - 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"), - 139, - 11, - 139, - 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"), - 139, - 11, - 139, - 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("input0"),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"), - 126, - 11, - 126, - 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("input0"),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("input0"),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"), - 126, - 11, - 126, - 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"), - 126, - 11, - 126, - 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"), - 126, - 11, - 126, - 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"), - 126, - 11, - 126, - 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("input0"),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("input0"),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"), - 137, - 11, - 137, - 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"), - 137, - 11, - 137, - 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"), - 137, - 11, - 137, - 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"), - 157, - 11, - 157, - 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"), - 157, - 11, - 157, - 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"), - 157, - 11, - 157, - 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"), - 157, - 11, - 157, - 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"), - 157, - 11, - 157, - 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"), - 158, - 11, - 158, - 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"), - 158, - 11, - 158, - 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"), - 158, - 11, - 158, - 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"), - 158, - 11, - 158, - 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"), - 158, - 11, - 158, - 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"), - 155, - 11, - 155, - 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"), - 155, - 11, - 155, - 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("input0"),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"), - 152, - 11, - 152, - 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"), - 152, - 11, - 152, - 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"), - 152, - 11, - 152, - 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"), - 165, - 14, - 165, - 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"), - 161, - 14, - 161, - 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"), - 163, - 14, - 163, - 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"), - 167, - 14, - 167, - 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"), - 151, - 11, - 151, - 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"), - 151, - 11, - 151, - 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"), - 154, - 11, - 154, - 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"), - 154, - 11, - 154, - 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"), - 167, - 14, - 167, - 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"), - 167, - 14, - 167, - 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"), - 163, - 14, - 163, - 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"), - 163, - 14, - 163, - 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"), - 161, - 14, - 161, - 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"), - 161, - 14, - 161, - 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"), - 165, - 14, - 165, - 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"), - 165, - 14, - 165, - 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"), - 158, - 11, - 158, - 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"), - 158, - 11, - 158, - 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"), - 157, - 11, - 157, - 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"), - 157, - 11, - 157, - 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"), - 137, - 11, - 137, - 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"), - 137, - 11, - 137, - 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"), - 122, - 11, - 122, - 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"), - 122, - 11, - 122, - 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"), - 123, - 11, - 123, - 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"), - 123, - 11, - 123, - 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"), - 142, - 11, - 142, - 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"), - 142, - 11, - 142, - 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"), - 134, - 11, - 134, - 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"), - 134, - 11, - 134, - 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"), - 138, - 11, - 138, - 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"), - 138, - 11, - 138, - 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"), - 141, - 11, - 141, - 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"), - 141, - 11, - 141, - 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("input0"),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"), - 1165, - 14, - 1165, - 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"), - 1193, - 14, - 1193, - 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"), - 1161, - 5, - 1161, - 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"), - 1158, - 14, - 1158, - 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"), - 1156, - 14, - 1156, - 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"), - 1154, - 14, - 1154, - 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"), - 1152, - 14, - 1152, - 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"), - 1150, - 14, - 1150, - 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"), - 1148, - 14, - 1148, - 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"), - 1146, - 14, - 1146, - 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"), - 1167, - 14, - 1167, - 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"), - 1135, - 11, - 1135, - 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"), - 1135, - 11, - 1135, - 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"), - 1146, - 14, - 1146, - 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"), - 1146, - 14, - 1146, - 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"), - 1148, - 14, - 1148, - 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"), - 1148, - 14, - 1148, - 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"), - 1150, - 14, - 1150, - 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"), - 1150, - 14, - 1150, - 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"), - 1152, - 14, - 1152, - 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"), - 1152, - 14, - 1152, - 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"), - 1154, - 14, - 1154, - 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"), - 1154, - 14, - 1154, - 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"), - 1156, - 14, - 1156, - 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"), - 1156, - 14, - 1156, - 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"), - 1158, - 14, - 1158, - 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"), - 1158, - 14, - 1158, - 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"), - 1161, - 5, - 1161, - 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"), - 1161, - 5, - 1161, - 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"), - 1142, - 12, - 1142, - 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"), - 1142, - 12, - 1142, - 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"), - 1136, - 11, - 1136, - 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"), - 1136, - 11, - 1136, - 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"), - 1143, - 12, - 1143, - 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"), - 1143, - 12, - 1143, - 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("input0"),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("input0"),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("input0"),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("input0"),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"), - 1070, - 12, - 1070, - 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"), - 1070, - 12, - 1070, - 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"), - 1116, - 14, - 1116, - 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"), - 1111, - 14, - 1111, - 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"), - 1107, - 14, - 1107, - 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"), - 1101, - 5, - 1101, - 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"), - 1096, - 14, - 1096, - 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"), - 1092, - 14, - 1092, - 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"), - 1088, - 14, - 1088, - 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"), - 1113, - 14, - 1113, - 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"), - 1109, - 14, - 1109, - 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"), - 1105, - 14, - 1105, - 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"), - 1098, - 14, - 1098, - 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"), - 1094, - 14, - 1094, - 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"), - 1090, - 14, - 1090, - 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"), - 1084, - 14, - 1084, - 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"), - 1080, - 14, - 1080, - 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"), - 1076, - 14, - 1076, - 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"), - 1082, - 14, - 1082, - 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"), - 1078, - 14, - 1078, - 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"), - 1086, - 14, - 1086, - 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"), - 1086, - 14, - 1086, - 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"), - 1086, - 14, - 1086, - 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"), - 1078, - 14, - 1078, - 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"), - 1078, - 14, - 1078, - 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"), - 1082, - 14, - 1082, - 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"), - 1082, - 14, - 1082, - 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"), - 1076, - 14, - 1076, - 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"), - 1076, - 14, - 1076, - 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"), - 1080, - 14, - 1080, - 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"), - 1080, - 14, - 1080, - 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"), - 1084, - 14, - 1084, - 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"), - 1084, - 14, - 1084, - 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"), - 1090, - 14, - 1090, - 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"), - 1090, - 14, - 1090, - 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"), - 1094, - 14, - 1094, - 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"), - 1094, - 14, - 1094, - 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"), - 1098, - 14, - 1098, - 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"), - 1098, - 14, - 1098, - 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"), - 1105, - 14, - 1105, - 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"), - 1105, - 14, - 1105, - 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"), - 1109, - 14, - 1109, - 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"), - 1109, - 14, - 1109, - 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"), - 1113, - 14, - 1113, - 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"), - 1113, - 14, - 1113, - 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"), - 1088, - 14, - 1088, - 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"), - 1088, - 14, - 1088, - 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"), - 1092, - 14, - 1092, - 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"), - 1092, - 14, - 1092, - 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"), - 1096, - 14, - 1096, - 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"), - 1096, - 14, - 1096, - 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"), - 1101, - 5, - 1101, - 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"), - 1101, - 5, - 1101, - 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"), - 1107, - 14, - 1107, - 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"), - 1107, - 14, - 1107, - 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"), - 1111, - 14, - 1111, - 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"), - 1111, - 14, - 1111, - 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"), - 1072, - 12, - 1072, - 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"), - 1072, - 12, - 1072, - 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"), - 1068, - 12, - 1068, - 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"), - 1068, - 12, - 1068, - 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"), - 1069, - 12, - 1069, - 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"), - 1069, - 12, - 1069, - 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"), - 1006, - 12, - 1006, - 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"), - 1006, - 12, - 1006, - 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("input0"),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("input0"),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("input0"),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("input0"),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("input0"),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"), - 4812, - 14, - 4812, - 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"), - 1000, - 11, - 1000, - 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"), - 1000, - 11, - 1000, - 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"), - 993, - 10, - 993, - 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"), - 993, - 10, - 993, - 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"), - 1001, - 11, - 1001, - 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"), - 1001, - 11, - 1001, - 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"), - 1003, - 11, - 1003, - 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"), - 1003, - 11, - 1003, - 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"), - 1005, - 12, - 1005, - 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"), - 1005, - 12, - 1005, - 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"), - 413, - 10, - 413, - 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"), - 413, - 10, - 413, - 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"), - 413, - 10, - 413, - 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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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("input0"),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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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("input0"),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"), - 404, - 11, - 404, - 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("input0"),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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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"), - 432, - 14, - 432, - 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"), - 434, - 14, - 434, - 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"), - 4770, - 9, - 4770, - 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"), - 4770, - 9, - 4770, - 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"), - 4769, - 9, - 4769, - 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"), - 4769, - 9, - 4769, - 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"), - 430, - 14, - 430, - 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"), - 429, - 14, - 429, - 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"), - 428, - 14, - 428, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 426, - 14, - 426, - 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"), - 422, - 14, - 422, - 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"), - 421, - 14, - 421, - 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"), - 405, - 11, - 405, - 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"), - 405, - 11, - 405, - 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"), - 421, - 14, - 421, - 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"), - 421, - 14, - 421, - 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"), - 422, - 14, - 422, - 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"), - 422, - 14, - 422, - 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"), - 426, - 14, - 426, - 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"), - 426, - 14, - 426, - 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"), - 402, - 11, - 402, - 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"), - 402, - 11, - 402, - 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"), - 428, - 14, - 428, - 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"), - 428, - 14, - 428, - 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"), - 429, - 14, - 429, - 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"), - 429, - 14, - 429, - 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"), - 430, - 14, - 430, - 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"), - 430, - 14, - 430, - 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"), - 415, - 12, - 415, - 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"), - 415, - 12, - 415, - 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"), - 414, - 12, - 414, - 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"), - 414, - 12, - 414, - 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"), - 412, - 10, - 412, - 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"), - 412, - 10, - 412, - 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"), - 404, - 11, - 404, - 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"), - 404, - 11, - 404, - 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"), - 413, - 10, - 413, - 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"), - 413, - 10, - 413, - 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"), - 371, - 12, - 371, - 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"), - 371, - 12, - 371, - 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"), - 382, - 14, - 382, - 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"), - 384, - 14, - 384, - 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"), - 364, - 11, - 364, - 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("input0"),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"), - 364, - 11, - 364, - 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"), - 364, - 11, - 364, - 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"), - 364, - 11, - 364, - 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("input0"),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"), - 364, - 11, - 364, - 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"), - 364, - 11, - 364, - 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"), - 364, - 11, - 364, - 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"), - 380, - 14, - 380, - 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"), - 379, - 14, - 379, - 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"), - 378, - 14, - 378, - 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"), - 365, - 11, - 365, - 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"), - 365, - 11, - 365, - 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"), - 365, - 11, - 365, - 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"), - 365, - 11, - 365, - 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"), - 367, - 11, - 367, - 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"), - 367, - 11, - 367, - 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"), - 367, - 11, - 367, - 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"), - 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]]]], - _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"), - 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]]]], - _OA_= - [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]]]], - _Ov_= - [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]]]], - _OB_= - [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]]]], - _Ou_= - [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]]]], - _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"), - 365, - 11, - 365, - 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"), - 365, - 11, - 365, - 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"), - 378, - 14, - 378, - 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"), - 378, - 14, - 378, - 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"), - 379, - 14, - 379, - 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"), - 379, - 14, - 379, - 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"), - 380, - 14, - 380, - 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"), - 380, - 14, - 380, - 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"), - 364, - 11, - 364, - 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"), - 364, - 11, - 364, - 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"), - 373, - 12, - 373, - 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"), - 373, - 12, - 373, - 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"), - 372, - 12, - 372, - 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"), - 372, - 12, - 372, - 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"), - 371, - 12, - 371, - 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"), - 371, - 12, - 371, - 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"), - 457, - 11, - 457, - 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"), - 457, - 11, - 457, - 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"), - 456, - 11, - 456, - 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"), - 456, - 11, - 456, - 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"), - 470, - 14, - 470, - 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"), - 469, - 14, - 469, - 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"), - 468, - 14, - 468, - 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"), - 472, - 14, - 472, - 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"), - 455, - 11, - 455, - 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"), - 455, - 11, - 455, - 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"), - 458, - 11, - 458, - 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"), - 458, - 11, - 458, - 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"), - 455, - 11, - 455, - 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"), - 455, - 11, - 455, - 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"), - 472, - 14, - 472, - 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"), - 472, - 14, - 472, - 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"), - 468, - 14, - 468, - 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"), - 468, - 14, - 468, - 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"), - 469, - 14, - 469, - 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"), - 469, - 14, - 469, - 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"), - 470, - 14, - 470, - 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"), - 470, - 14, - 470, - 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"), - 456, - 11, - 456, - 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"), - 456, - 11, - 456, - 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"), - 459, - 11, - 459, - 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"), - 459, - 11, - 459, - 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"), - 457, - 11, - 457, - 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"), - 457, - 11, - 457, - 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"), - 465, - 12, - 465, - 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"), - 465, - 12, - 465, - 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"), - 752, - 12, - 752, - 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"), - 752, - 12, - 752, - 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("input0"),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("input0"),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("input0"),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"), - 746, - 11, - 746, - 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"), - 746, - 11, - 746, - 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"), - 740, - 10, - 740, - 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"), - 740, - 10, - 740, - 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"), - 747, - 11, - 747, - 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"), - 747, - 11, - 747, - 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"), - 749, - 11, - 749, - 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"), - 749, - 11, - 749, - 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"), - 751, - 12, - 751, - 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"), - 751, - 12, - 751, - 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("input0"),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"), - 894, - 10, - 894, - 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"), - 894, - 10, - 894, - 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("input0"),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("input0"),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"), - 893, - 10, - 893, - 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"), - 893, - 10, - 893, - 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("input0"),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("input0"),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"), - 892, - 10, - 892, - 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"), - 892, - 10, - 892, - 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"), - 4649, - 14, - 4649, - 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("input0"),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"), - 871, - 11, - 871, - 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"), - 871, - 11, - 871, - 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"), - 4672, - 7, - 4675, - 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"), - 866, - 11, - 866, - 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"), - 4660, - 14, - 4660, - 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"), - 907, - 14, - 907, - 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"), - 917, - 14, - 917, - 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"), - 915, - 14, - 915, - 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"), - 913, - 14, - 913, - 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"), - 911, - 14, - 911, - 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"), - 909, - 14, - 909, - 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"), - 905, - 14, - 905, - 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"), - 903, - 14, - 903, - 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("input0"),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("input0"),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"), - 860, - 11, - 860, - 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("input0"),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"), - 4736, - 5, - 4736, - 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"), - 842, - 10, - 842, - 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"), - 4726, - 14, - 4726, - 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("input0"),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("input0"),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"), - 864, - 10, - 864, - 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("input0"),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("input0"),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"), - 864, - 10, - 864, - 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"), - 864, - 10, - 864, - 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("input0"),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"), - 864, - 10, - 864, - 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"), - 864, - 10, - 864, - 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"), - 869, - 11, - 869, - 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"), - 869, - 11, - 869, - 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"), - 4697, - 6, - 4703, - 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"), - 867, - 11, - 867, - 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"), - 4715, - 5, - 4716, - 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"), - 867, - 11, - 867, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 863, - 10, - 863, - 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"), - 891, - 10, - 891, - 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"), - 891, - 10, - 891, - 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"), - 857, - 11, - 857, - 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"), - 857, - 11, - 857, - 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"), - 857, - 11, - 857, - 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"), - 857, - 11, - 857, - 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"), - 857, - 47, - 857, - 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"), - 919, - 14, - 919, - 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"), - 865, - 11, - 865, - 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"), - 865, - 11, - 865, - 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"), - 868, - 11, - 868, - 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"), - 868, - 11, - 868, - 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"), - 873, - 11, - 873, - 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"), - 873, - 11, - 873, - 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"), - 874, - 11, - 874, - 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"), - 874, - 11, - 874, - 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"), - 875, - 11, - 875, - 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"), - 875, - 11, - 875, - 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"), - 876, - 11, - 876, - 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"), - 876, - 11, - 876, - 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"), - 877, - 11, - 877, - 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"), - 877, - 11, - 877, - 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"), - 919, - 14, - 919, - 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"), - 919, - 14, - 919, - 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"), - 857, - 11, - 857, - 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"), - 857, - 11, - 857, - 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"), - 867, - 11, - 867, - 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"), - 867, - 11, - 867, - 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"), - 842, - 10, - 842, - 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"), - 842, - 10, - 842, - 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"), - 860, - 11, - 860, - 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"), - 860, - 11, - 860, - 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"), - 903, - 14, - 903, - 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"), - 903, - 14, - 903, - 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"), - 905, - 14, - 905, - 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"), - 905, - 14, - 905, - 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"), - 909, - 14, - 909, - 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"), - 909, - 14, - 909, - 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"), - 911, - 14, - 911, - 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"), - 911, - 14, - 911, - 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"), - 913, - 14, - 913, - 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"), - 913, - 14, - 913, - 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"), - 915, - 14, - 915, - 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"), - 915, - 14, - 915, - 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"), - 917, - 14, - 917, - 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"), - 917, - 14, - 917, - 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"), - 907, - 14, - 907, - 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"), - 907, - 14, - 907, - 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"), - 866, - 11, - 866, - 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"), - 866, - 11, - 866, - 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"), - 856, - 11, - 856, - 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"), - 856, - 11, - 856, - 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"), - 858, - 11, - 858, - 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"), - 858, - 11, - 858, - 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"), - 859, - 11, - 859, - 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"), - 859, - 11, - 859, - 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"), - 887, - 12, - 887, - 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"), - 887, - 12, - 887, - 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"), - 4919, - 14, - 4919, - 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("input0"),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"), - 964, - 10, - 964, - 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"), - 964, - 10, - 964, - 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"), - 4898, - 14, - 4898, - 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("input0"),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("input0"),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"), - 963, - 10, - 963, - 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"), - 963, - 10, - 963, - 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"), - 4884, - 14, - 4884, - 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("input0"),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"), - 962, - 10, - 962, - 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"), - 962, - 10, - 962, - 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"), - 4866, - 14, - 4866, - 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("input0"),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("input0"),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"), - 961, - 10, - 961, - 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"), - 961, - 10, - 961, - 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"), - 4785, - 14, - 4785, - 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"), - 4973, - 14, - 4973, - 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("input0"),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("input0"),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"), - 939, - 11, - 939, - 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"), - 939, - 11, - 939, - 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"), - 4844, - 14, - 4844, - 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"), - 4964, - 14, - 4964, - 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"), - 937, - 11, - 937, - 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"), - 937, - 11, - 937, - 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"), - 4806, - 14, - 4806, - 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"), - 4842, - 14, - 4842, - 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"), - 4832, - 14, - 4832, - 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"), - 4833, - 14, - 4833, - 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"), - 4852, - 14, - 4852, - 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"), - 960, - 10, - 960, - 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"), - 960, - 10, - 960, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 946, - 12, - 946, - 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"), - 946, - 12, - 946, - 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"), - 4803, - 14, - 4803, - 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"), - 4803, - 14, - 4803, - 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"), - 971, - 14, - 971, - 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"), - 981, - 14, - 981, - 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"), - 979, - 14, - 979, - 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"), - 977, - 14, - 977, - 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"), - 975, - 14, - 975, - 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"), - 973, - 14, - 973, - 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"), - 969, - 14, - 969, - 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"), - 967, - 14, - 967, - 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"), - 983, - 14, - 983, - 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"), - 4838, - 14, - 4838, - 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"), - 4836, - 14, - 4836, - 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"), - 4840, - 14, - 4840, - 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"), - 941, - 11, - 941, - 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"), - 941, - 11, - 941, - 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"), - 942, - 11, - 942, - 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"), - 942, - 11, - 942, - 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"), - 943, - 11, - 943, - 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"), - 943, - 11, - 943, - 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"), - 4840, - 14, - 4840, - 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"), - 4840, - 14, - 4840, - 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"), - 4836, - 14, - 4836, - 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"), - 4836, - 14, - 4836, - 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"), - 4838, - 14, - 4838, - 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"), - 4838, - 14, - 4838, - 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"), - 983, - 14, - 983, - 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"), - 983, - 14, - 983, - 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"), - 967, - 14, - 967, - 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"), - 967, - 14, - 967, - 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"), - 969, - 14, - 969, - 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"), - 969, - 14, - 969, - 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"), - 973, - 14, - 973, - 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"), - 973, - 14, - 973, - 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"), - 975, - 14, - 975, - 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"), - 975, - 14, - 975, - 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"), - 977, - 14, - 977, - 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"), - 977, - 14, - 977, - 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"), - 979, - 14, - 979, - 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"), - 979, - 14, - 979, - 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"), - 981, - 14, - 981, - 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"), - 981, - 14, - 981, - 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"), - 971, - 14, - 971, - 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"), - 971, - 14, - 971, - 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"), - 946, - 12, - 946, - 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"), - 946, - 12, - 946, - 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"), - 945, - 12, - 945, - 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"), - 945, - 12, - 945, - 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"), - 4833, - 14, - 4833, - 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"), - 4833, - 14, - 4833, - 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"), - 4832, - 14, - 4832, - 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"), - 4832, - 14, - 4832, - 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"), - 4842, - 14, - 4842, - 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"), - 4842, - 14, - 4842, - 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"), - 944, - 12, - 944, - 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"), - 944, - 12, - 944, - 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"), - 947, - 12, - 947, - 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"), - 947, - 12, - 947, - 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"), - 957, - 12, - 957, - 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"), - 957, - 12, - 957, - 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"), - 793, - 12, - 793, - 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"), - 831, - 14, - 831, - 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"), - 795, - 12, - 795, - 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"), - 832, - 14, - 832, - 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("input0"),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"), - 795, - 12, - 795, - 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"), - 795, - 12, - 795, - 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"), - 827, - 14, - 827, - 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"), - 825, - 14, - 825, - 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"), - 823, - 14, - 823, - 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"), - 821, - 14, - 821, - 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"), - 817, - 5, - 818, - 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"), - 814, - 14, - 814, - 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"), - 812, - 14, - 812, - 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"), - 810, - 14, - 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]]]], - _EE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 808, - 14, - 808, - 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"), - 806, - 14, - 806, - 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"), - 803, - 14, - 803, - 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"), - 801, - 14, - 801, - 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"), - 799, - 14, - 799, - 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"), - 799, - 14, - 799, - 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"), - 799, - 14, - 799, - 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"), - 801, - 14, - 801, - 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"), - 801, - 14, - 801, - 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"), - 803, - 14, - 803, - 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"), - 803, - 14, - 803, - 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"), - 806, - 14, - 806, - 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"), - 806, - 14, - 806, - 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"), - 808, - 14, - 808, - 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"), - 808, - 14, - 808, - 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"), - 810, - 14, - 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]]]], - _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"), - 810, - 14, - 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]]]], - _EN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 812, - 14, - 812, - 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"), - 812, - 14, - 812, - 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"), - 814, - 14, - 814, - 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"), - 814, - 14, - 814, - 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"), - 817, - 5, - 818, - 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"), - 817, - 5, - 818, - 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"), - 821, - 14, - 821, - 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"), - 821, - 14, - 821, - 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"), - 823, - 14, - 823, - 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"), - 823, - 14, - 823, - 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"), - 825, - 14, - 825, - 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"), - 825, - 14, - 825, - 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"), - 827, - 14, - 827, - 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"), - 827, - 14, - 827, - 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"), - 793, - 12, - 793, - 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"), - 793, - 12, - 793, - 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"), - 42, - 12, - 42, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 12, - 42, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ec_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 12, - 42, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 12, - 42, - 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"), - 44, - 11, - 44, - 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"), - 46, - 12, - 46, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 46, - 12, - 46, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 53, - 14, - 53, - 28, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 54, - 14, - 54, - 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"), - 45, - 12, - 45, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 45, - 12, - 45, - 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"), - 54, - 14, - 54, - 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"), - 54, - 14, - 54, - 32, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 53, - 14, - 53, - 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"), - 53, - 14, - 53, - 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"), - 46, - 12, - 46, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 46, - 12, - 46, - 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"), - 44, - 11, - 44, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 11, - 44, - 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"), - 509, - 12, - 509, - 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"), - 504, - 51, - 504, - 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"), - 494, - 46, - 494, - 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"), - 496, - 10, - 496, - 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"), - 496, - 10, - 496, - 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"), - 500, - 11, - 500, - 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"), - 500, - 11, - 500, - 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"), - 502, - 11, - 502, - 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"), - 502, - 11, - 502, - 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"), - 504, - 11, - 504, - 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"), - 504, - 11, - 504, - 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"), - 498, - 11, - 498, - 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"), - 498, - 11, - 498, - 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"), - 503, - 11, - 503, - 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"), - 503, - 11, - 503, - 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"), - 499, - 11, - 499, - 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"), - 499, - 11, - 499, - 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"), - 509, - 12, - 509, - 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"), - 509, - 12, - 509, - 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"), - 501, - 11, - 501, - 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"), - 501, - 11, - 501, - 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"), - 335, - 14, - 335, - 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"), - 337, - 14, - 337, - 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("input0"),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("input0"),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"), - 331, - 5, - 333, - 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("input0"),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"), - 721, - 10, - 721, - 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"), - 721, - 10, - 721, - 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("input0"),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("input0"),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"), - 720, - 10, - 720, - 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"), - 720, - 10, - 720, - 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("input0"),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("input0"),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"), - 719, - 10, - 719, - 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"), - 719, - 10, - 719, - 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"), - 682, - 12, - 682, - 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"), - 682, - 12, - 682, - 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"), - 685, - 10, - 685, - 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"), - 685, - 10, - 685, - 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"), - 685, - 10, - 685, - 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("input0"),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"), - 695, - 11, - 695, - 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"), - 695, - 11, - 695, - 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("input0"),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("input0"),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"), - 684, - 10, - 684, - 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("input0"),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"), - 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]]]]], - _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"), - 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]]]]], - _yk_= - [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]]]]], - _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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 686, - 55, - 686, - 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'aide personnalis\xc3\xa9e 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"), - 686, - 11, - 686, - 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"), - 686, - 11, - 686, - 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"), - 697, - 11, - 697, - 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"), - 718, - 10, - 718, - 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"), - 718, - 10, - 718, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 724, - 14, - 724, - 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"), - 699, - 11, - 699, - 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"), - 699, - 11, - 699, - 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"), - 700, - 11, - 700, - 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"), - 700, - 11, - 700, - 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"), - 702, - 11, - 702, - 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"), - 702, - 11, - 702, - 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"), - 703, - 11, - 703, - 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"), - 703, - 11, - 703, - 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"), - 704, - 11, - 704, - 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"), - 704, - 11, - 704, - 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"), - 705, - 11, - 705, - 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"), - 705, - 11, - 705, - 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"), - 706, - 11, - 706, - 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"), - 706, - 11, - 706, - 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"), - 707, - 11, - 707, - 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"), - 707, - 11, - 707, - 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"), - 701, - 11, - 701, - 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"), - 701, - 11, - 701, - 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"), - 724, - 14, - 724, - 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"), - 724, - 14, - 724, - 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"), - 698, - 11, - 698, - 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"), - 698, - 11, - 698, - 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"), - 697, - 11, - 697, - 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"), - 697, - 11, - 697, - 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"), - 688, - 11, - 688, - 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"), - 688, - 11, - 688, - 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"), - 684, - 10, - 684, - 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"), - 684, - 10, - 684, - 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"), - 690, - 10, - 690, - 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"), - 690, - 10, - 690, - 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"), - 685, - 10, - 685, - 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"), - 685, - 10, - 685, - 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"), - 682, - 12, - 682, - 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"), - 682, - 12, - 682, - 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"), - 691, - 10, - 691, - 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"), - 691, - 10, - 691, - 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"), - 681, - 12, - 681, - 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"), - 681, - 12, - 681, - 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"), - 692, - 10, - 692, - 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"), - 692, - 10, - 692, - 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"), - 715, - 12, - 715, - 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"), - 715, - 12, - 715, - 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("input0"),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"), - 648, - 10, - 648, - 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"), - 648, - 10, - 648, - 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("input0"),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("input0"),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"), - 647, - 10, - 647, - 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"), - 647, - 10, - 647, - 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"), - 641, - 10, - 641, - 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("input0"),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("input0"),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"), - 646, - 10, - 646, - 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"), - 646, - 10, - 646, - 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"), - 640, - 10, - 640, - 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("input0"),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"), - 623, - 11, - 623, - 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"), - 623, - 11, - 623, - 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"), - 639, - 10, - 639, - 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"), - 625, - 11, - 625, - 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"), - 625, - 11, - 625, - 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"), - 620, - 21, - 620, - 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"), - 645, - 10, - 645, - 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"), - 645, - 10, - 645, - 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"), - 622, - 12, - 622, - 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"), - 622, - 12, - 622, - 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"), - 622, - 12, - 622, - 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"), - 651, - 14, - 651, - 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"), - 616, - 12, - 616, - 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"), - 619, - 12, - 619, - 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"), - 619, - 12, - 619, - 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"), - 627, - 11, - 627, - 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"), - 627, - 11, - 627, - 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"), - 629, - 11, - 629, - 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"), - 629, - 11, - 629, - 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"), - 616, - 12, - 616, - 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"), - 616, - 12, - 616, - 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"), - 651, - 14, - 651, - 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"), - 651, - 14, - 651, - 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"), - 622, - 12, - 622, - 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"), - 622, - 12, - 622, - 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"), - 628, - 11, - 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]]]]], - _t1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 628, - 11, - 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]]]]], - _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"), - 618, - 12, - 618, - 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"), - 618, - 12, - 618, - 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"), - 621, - 12, - 621, - 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"), - 621, - 12, - 621, - 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"), - 620, - 21, - 620, - 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"), - 620, - 21, - 620, - 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"), - 639, - 10, - 639, - 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"), - 639, - 10, - 639, - 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"), - 630, - 12, - 630, - 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"), - 630, - 12, - 630, - 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"), - 640, - 10, - 640, - 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"), - 640, - 10, - 640, - 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"), - 641, - 10, - 641, - 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"), - 641, - 10, - 641, - 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"), - 643, - 12, - 643, - 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"), - 643, - 12, - 643, - 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("input0"),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"), - 578, - 10, - 578, - 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"), - 578, - 10, - 578, - 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("input0"),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"), - 577, - 10, - 577, - 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"), - 577, - 10, - 577, - 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"), - 551, - 10, - 551, - 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"), - 551, - 10, - 551, - 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"), - 551, - 10, - 551, - 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("input0"),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("input0"),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"), - 576, - 10, - 576, - 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"), - 576, - 10, - 576, - 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"), - 550, - 10, - 550, - 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"), - 550, - 10, - 550, - 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"), - 550, - 10, - 550, - 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("input0"),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"), - 575, - 10, - 575, - 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"), - 575, - 10, - 575, - 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"), - 552, - 11, - 552, - 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"), - 552, - 11, - 552, - 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"), - 552, - 11, - 552, - 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"), - 564, - 12, - 564, - 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"), - 564, - 12, - 564, - 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"), - 564, - 12, - 564, - 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"), - 574, - 10, - 574, - 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"), - 574, - 10, - 574, - 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"), - 574, - 10, - 574, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 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]]]]], - _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"), - 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]]]]], - _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"), - 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]]]]], - _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"), - 559, - 11, - 559, - 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"), - 559, - 11, - 559, - 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"), - 559, - 11, - 559, - 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"), - 559, - 11, - 559, - 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"), - 565, - 12, - 565, - 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"), - 565, - 12, - 565, - 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"), - 565, - 12, - 565, - 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"), - 581, - 14, - 581, - 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"), - 554, - 11, - 554, - 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"), - 554, - 11, - 554, - 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"), - 557, - 11, - 557, - 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"), - 557, - 11, - 557, - 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"), - 581, - 14, - 581, - 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"), - 581, - 14, - 581, - 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"), - 565, - 12, - 565, - 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"), - 565, - 12, - 565, - 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"), - 559, - 11, - 559, - 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"), - 559, - 11, - 559, - 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"), - 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]]]]], - _p$_= - [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]]]]], - _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"), - 558, - 11, - 558, - 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"), - 558, - 11, - 558, - 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"), - 563, - 12, - 563, - 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"), - 563, - 12, - 563, - 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"), - 562, - 12, - 562, - 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"), - 562, - 12, - 562, - 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"), - 532, - 10, - 532, - 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"), - 532, - 10, - 532, - 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"), - 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]]]]], - _rz_= - [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]]]]], - _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"), - 555, - 11, - 555, - 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"), - 555, - 11, - 555, - 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"), - 548, - 11, - 548, - 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"), - 548, - 11, - 548, - 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"), - 564, - 12, - 564, - 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"), - 564, - 12, - 564, - 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"), - 552, - 11, - 552, - 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"), - 552, - 11, - 552, - 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"), - 550, - 10, - 550, - 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"), - 550, - 10, - 550, - 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"), - 551, - 10, - 551, - 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"), - 551, - 10, - 551, - 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"), - 560, - 11, - 560, - 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"), - 560, - 11, - 560, - 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"), - 566, - 12, - 566, - 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"), - 566, - 12, - 566, - 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"), - 571, - 12, - 571, - 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"), - 571, - 12, - 571, - 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"), - 1034, - 12, - 1034, - 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"), - 1034, - 12, - 1034, - 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"), - 1029, - 11, - 1029, - 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"), - 1029, - 11, - 1029, - 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"), - 1029, - 11, - 1029, - 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"), - 1029, - 11, - 1029, - 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"), - 1032, - 11, - 1032, - 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"), - 1032, - 11, - 1032, - 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"), - 1031, - 11, - 1031, - 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"), - 1031, - 11, - 1031, - 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"), - 1030, - 11, - 1030, - 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"), - 1030, - 11, - 1030, - 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"), - 1031, - 11, - 1031, - 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"), - 1031, - 11, - 1031, - 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"), - 1032, - 11, - 1032, - 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"), - 1032, - 11, - 1032, - 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"), - 1029, - 11, - 1029, - 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"), - 1029, - 11, - 1029, - 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"), - 1034, - 12, - 1034, - 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"), - 1034, - 12, - 1034, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 1014, - 12, - 1014, - 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"), - 661, - 12, - 661, - 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"), - 661, - 12, - 661, - 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"), - 604, - 12, - 604, - 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"), - 604, - 12, - 604, - 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"), - 604, - 12, - 604, - 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"), - 597, - 12, - 597, - 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"), - 592, - 11, - 592, - 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"), - 595, - 11, - 595, - 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"), - 595, - 11, - 595, - 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"), - 592, - 11, - 592, - 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"), - 592, - 11, - 592, - 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"), - 593, - 11, - 593, - 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"), - 593, - 11, - 593, - 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"), - 597, - 12, - 597, - 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"), - 597, - 12, - 597, - 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"), - 521, - 12, - 521, - 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"), - 521, - 12, - 521, - 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"), - 519, - 11, - 519, - 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"), - 519, - 11, - 519, - 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"), - 519, - 11, - 519, - 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"), - 519, - 11, - 519, - 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"), - 518, - 11, - 518, - 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"), - 518, - 11, - 518, - 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[115], - 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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[115],date_courante,_ceb_), - _ced_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _cee_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_cd6_), - _cd8_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _cd9_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_cdZ_), - _cd1_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _cd2_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_cdS_), - _cdU_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), - _cdV_= - caml_call2(Runtime_ocaml_Runtime[130],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_(enfant) - {try - {var - _cc6_=function(param){return 0}, - _cc7_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_bZ_,1)}, - _cc8_= - [0, - function(param) - {function _cc$_(param){return 1} - function _cda_(param) - {var - _cdb_= - caml_call2 - (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2); - switch(enfant[2][0]) - {case 0:var _cdc_=0;break; - case 1:var _cdc_=0;break; - default:var _cdc_=1} - switch(enfant[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(enfant[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_(enfant) - {try - {var - _ccF_=function(param){return 0}, - _ccG_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_b5_,1)}, - _ccH_= - [0, - function(param) - {function _ccK_(param) - {function _ccP_(param){throw Runtime_ocaml_Runtime[2]} - function _ccQ_(param){return 0} - var - _ccR_= - [0, - function(param) - {function _ccS_(param){return 1} - function _ccT_(param) - {switch(enfant[2][0]) - {case 0:var _cc3_=0;break; - case 1:var _cc3_=1;break; - default:var _cc3_=0} - switch(enfant[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) - {function _ccV_(param){return 1} - function _ccW_(param) - {var - _ccX_= - caml_call2(Runtime_ocaml_Runtime[94],enfant[4],age_l512_3_2), - _ccY_= - caml_call2(Runtime_ocaml_Runtime[125],_ccX_,date_courante), - _ccZ_= - caml_call2 - (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2), - _cc0_=caml_call2(Runtime_ocaml_Runtime[83],_ccZ_,_ccY_); - switch(enfant[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) - {function _ccN_(param){return 0} - function _ccO_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_b$_,enfant[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_(enfant) - {try - {var - _cbZ_=function(param){throw Runtime_ocaml_Runtime[2]}, - _cb0_=function(param){return 0}, - _cb1_= - function(param) - {function _cca_(param){return _cf_} - function _ccb_(param) - {switch(enfant[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) - {function _ccd_(param){return _ch_} - function _cce_(param) - {switch(enfant[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) - {function _ccg_(param){return _cj_} - function _cch_(param) - {switch(enfant[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) - {function _cb9_(param){return _co_} - function _cb__(param) - {switch(enfant[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) - {function _cb6_(param){return _cr_} - function _cb7_(param) - {switch(enfant[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_(enfant) - {try - {var - _cbB_=function(param){throw Runtime_ocaml_Runtime[2]}, - _cbC_=function(param){return 0}, - _cbD_= - function(param) - {function _cbK_(param){return _cx_} - function _cbL_(param) - {switch(enfant[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) - {function _cbN_(param){return _cz_} - function _cbO_(param) - {switch(enfant[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) - {function _cbQ_(param){return _cB_} - function _cbR_(param) - {switch(enfant[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) - {function _cbT_(param){return _cD_} - function _cbU_(param) - {switch(enfant[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) - {function _cbH_(param){return _cJ_} - function _cbI_(param) - {switch(enfant[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_(enfant) - {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) - {function _cbo_(param){return version_avril_2008_dot_age_min} - function _cbp_(param) - {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],enfant[4],_cbr_), - _cbt_=caml_call2(Runtime_ocaml_Runtime[120],_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_(enfant) - {try - {var - _cba_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[86], - enfant_le_plus_age_dot_le_plus, - enfant)}, - _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[120],date_courante,_caX_), - _caZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _ca0_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_caL_), - _caN_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _caO_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_caz_), - _caB_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _caC_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_can_), - _cap_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _caq_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_b$1_), - _b$3_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _b$4_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_b$P_), - _b$R_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b$S_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_b$D_), - _b$F_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b$G_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_b$r_), - _b$t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b$u_= - caml_call2(Runtime_ocaml_Runtime[130],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_(enfant) - {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) - {function _b_O_(param){return 1} - function _b_P_(param) - {var - _b_X_= - caml_call3 - (Runtime_ocaml_Runtime[28],_ed_,embed_enfant,enfant), - _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],enfant[6],_b_0_), - _b_2_=caml_call3(Runtime_ocaml_Runtime[60],0,0,365), - _b_3_= - caml_call2 - (Runtime_ocaml_Runtime[94], - enfant[4], - prestations_familiales_dot_age), - _b_4_= - caml_call2(Runtime_ocaml_Runtime[99],_b_3_,date_courante), - _b_5_=caml_call2(Runtime_ocaml_Runtime[114],_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[126], - _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[121],_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[121],_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[121],_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[120],date_courante,_b_n_), - _b_p_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b_q_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b_b_), - _b_d_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b_e_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b91_), - _b93_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b94_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b9P_), - _b9R_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), - _b9S_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b9D_), - _b9F_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), - _b9G_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b9r_), - _b9t_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), - _b9u_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b9f_), - _b9h_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), - _b9i_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b85_), - _b87_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _b88_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b8T_), - _b8V_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _b8W_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b8H_), - _b8J_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _b8K_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[121],_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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[121],_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[120],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[130],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[126],_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[126],_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[126],_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_(enfant) - {try - {var - _b4J_=function(param){return 0}, - _b4K_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_f4_,1)}, - _b4L_= - [0, - function(param) - {function _b4O_(param){return 1} - function _b4P_(param) - {var - _b42_= - caml_call3 - (Runtime_ocaml_Runtime[28],_f5_,embed_enfant,enfant), - _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],enfant[4],_b45_), - _b47_= - caml_call2(Runtime_ocaml_Runtime[120],_b46_,date_courante), - _b48_= - caml_call3 - (Runtime_ocaml_Runtime[28],_f9_,embed_enfant,enfant), - _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) - {function _b4R_(param){return 1} - function _b4S_(param) - {var - _b4T_= - caml_call3 - (Runtime_ocaml_Runtime[28],_gc_,embed_enfant,enfant), - _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],enfant[4],_b4W_), - _b4Y_= - caml_call2(Runtime_ocaml_Runtime[120],_b4X_,date_courante), - _b4Z_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b40_= - caml_call2 - (Runtime_ocaml_Runtime[126], - _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_(allocation) - {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) - {function _b4b_(param){throw Runtime_ocaml_Runtime[2]} - function _b4c_(param){return 0} - function _b4d_(param) - {function _b4u_(param) - {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],allocation,_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) - {var - _b4w_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1), - _b4x_= - caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4w_), - _b4y_= - caml_call2 - (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4x_), - _b4z_= - caml_call2 - (Runtime_ocaml_Runtime[118],ressources_menage,_b4y_), - _b4A_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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) - {function _b4f_(param) - {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],allocation,_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) - {var - _b4h_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4), - _b4i_= - caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4h_), - _b4j_= - caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4i_), - _b4k_= - caml_call2 - (Runtime_ocaml_Runtime[118],ressources_menage,_b4j_), - _b4l_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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[123], - 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[118], - ressources_menage, - plafond_i_i_d521_3), - _b31_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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[118], - 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[121],_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[123], - 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[121],_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[118], - ressources_menage, - plafond_i_i_d521_3), - _b3y_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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[121],_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[118], - 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[121],_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[123], - 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[121],_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[118], - ressources_menage, - plafond_i_i_d521_3), - _b2__= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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[121],_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[118], - 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[121],_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[121],_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[120],date_courante,_b2I_), - _b2K_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b2L_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b2w_), - _b2y_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b2z_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b2k_), - _b2m_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b2n_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1__), - _b2a_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), - _b2b_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1Y_), - _b10_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), - _b11_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1M_), - _b1O_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), - _b1P_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1A_), - _b1C_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), - _b1D_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1o_), - _b1q_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _b1r_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b1c_), - _b1e_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _b1f_= - caml_call2(Runtime_ocaml_Runtime[130],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[121],_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[120],date_courante,_b02_), - _b04_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _b05_= - caml_call2(Runtime_ocaml_Runtime[130],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_(enfant) - {try - {var - _bZ2_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bZ3_=function(param){return 0}, - _bZ4_= - function(param) - {function _b0B_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$59)} - function _b0C_(param) - {var - _b0D_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hx_,embed_enfant,enfant), - _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) - {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) - {var - _b0u_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hD_,embed_enfant,enfant), - _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[123], - 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) - {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) - {var - _b0j_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hJ_,embed_enfant,enfant), - _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[118], - ressources_menage, - plafond_i_i_d521_3), - _b0o_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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) - {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) - {var - _b0a_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hP_,embed_enfant,enfant), - _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[118], - 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_(enfant) - {try - {var - _bYU_= - function(param) - {var - _bZB_= - caml_call3(Runtime_ocaml_Runtime[28],_ie_,embed_enfant,enfant), - _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) - {function _bYZ_(param){throw Runtime_ocaml_Runtime[2]} - function _bY0_(param){return 0} - function _bY1_(param) - {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) - {var - _bZn_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), - _bZo_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bZn_), - _bZp_= - caml_call2(Runtime_ocaml_Runtime[120],_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,enfant), - _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) - {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) - {var - _bY5_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), - _bY6_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bY5_), - _bY7_= - caml_call2(Runtime_ocaml_Runtime[125],_bY6_,date_courante), - _bY8_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), - _bY9_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bY8_), - _bY__= - caml_call2(Runtime_ocaml_Runtime[120],_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,enfant), - _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[118],ressources_menage,_bYJ_), - _bYL_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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[118],ressources_menage,_bYu_), - _bYw_= - caml_call2 - (Runtime_ocaml_Runtime[123], - 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_(enfant) - {try - {var - _bX__= - function(param) - {var - _bYc_= - caml_call3(Runtime_ocaml_Runtime[28],_iM_,embed_enfant,enfant), - _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,enfant), - _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[130],_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[130],_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(param,function_input0) - {var _bUB_=enfant_of_jsoo(function_input0); - return ! ! caml_call1(prestations_familiales[2],_bUB_)})} - function t104(param) - {return caml_js_wrap_meth_callback - (function(param,function_input0) - {var _bUA_=enfant_of_jsoo(function_input0); - 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[130],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_(aide_finale) - {try - {var - _bPC_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[104],aide_finale,taux_crds)}, - _bPD_= - function(param) - {var - _bPG_=caml_call3(Runtime_ocaml_Runtime[57],2018,9,1), - _bPH_= - caml_call2(Runtime_ocaml_Runtime[130],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[117], - 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[127], - 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[117], - 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[127], - 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[120],date_naissance_assure,_bMV_), - _bMX_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), - _bMY_= - caml_call2 - (Runtime_ocaml_Runtime[130],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[115],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[130],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[128], - 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[128], - 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[115],date_courante,_bLe_), - _bLg_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _bLh_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bK9_), - _bK$_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _bLa_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bK2_), - _bK4_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _bK5_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bKV_), - _bKX_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), - _bKY_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[120],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[130],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[130],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[115],date_courante,_bGp_), - _bGr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bGs_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bF9_), - _bF$_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bGa_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],date_courante,_bFI_), - _bFK_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bFL_= - caml_call2(Runtime_ocaml_Runtime[115],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[115],date_courante,_bFo_), - _bFq_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bFr_= - caml_call2(Runtime_ocaml_Runtime[130],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[120],date_courante,_bE6_), - _bE8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bE9_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[115],date_courante,_bEA_), - _bEC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bED_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[115],date_courante,_bEd_), - _bEf_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bEg_= - caml_call2(Runtime_ocaml_Runtime[130],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[126],nombre_personnes_a_charge,_bDI_), - _bDK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bDL_= - caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bDK_), - _bDM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDN_= - caml_call2(Runtime_ocaml_Runtime[115],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[130],date_courante,_bDA_), - _bDC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDD_= - caml_call2(Runtime_ocaml_Runtime[115],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[130],date_courante,_bDo_), - _bDq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDr_= - caml_call2(Runtime_ocaml_Runtime[115],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[126],nombre_personnes_a_charge,_bCU_), - _bCW_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCX_= - caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bCW_), - _bCY_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCZ_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bCM_), - _bCO_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCP_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bCA_), - _bCC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCD_= - caml_call2(Runtime_ocaml_Runtime[130],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[126],nombre_personnes_a_charge,_bB9_), - _bB$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCa_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[130],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[130],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[115],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[115],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[130],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[130],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[130],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[115],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[115],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[130],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[130],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[126],nombre_personnes_a_charge,_bAj_), - _bAl_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bAm_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],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[130],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[115],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[130],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[115],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[126],nombre_personnes_a_charge,_bzs_), - _bzu_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bzv_= - caml_call2(Runtime_ocaml_Runtime[115],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[130],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[115],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[130],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[115],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[130],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[126],nombre_personnes_a_charge,_byE_), - _byG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _byH_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[130],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[130],date_courante,_bxZ_), - _bx1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bx2_= - caml_call2(Runtime_ocaml_Runtime[115],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[115],date_courante,_bxO_), - _bxQ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bxR_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[130],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[115],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[115],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[130],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[130],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[123], - 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_(aide_finale) - {try - {var - _bwA_= - function(param) - {if - (caml_call2 - (Runtime_ocaml_Runtime[123], - loyer_principal_avec_reduction, - plafond_suppression_d823_16)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$108); - if - (caml_call2 - (Runtime_ocaml_Runtime[123], - 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],aide_finale,_bwJ_); - return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bwK_)} - return aide_finale}, - _bwB_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_rM_,1)}, - _bwC_= - [0, - function(param) - {function _bwF_(param){return aide_finale} - 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[128],_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[130],date_courante,_bwp_), - _bwr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bws_= - caml_call2(Runtime_ocaml_Runtime[115],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[128],_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[115],date_courante,_bwc_), - _bwe_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bwf_= - caml_call2(Runtime_ocaml_Runtime[130],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[128],_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[130],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[130],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[115],date_courante,_bvK_), - _bvM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bvN_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_bvA_), - _bvC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bvD_= - caml_call2(Runtime_ocaml_Runtime[130],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_(aide_finale) - {try - {var - _bvi_= - function(param) - {var - _bvm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _r__, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=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$0, - montant_forfaitaire_d823_16); - return caml_call2(Runtime_ocaml_Runtime[128],_bvq_,_bvp_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale$0, - 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[112],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[112],rapport_loyers,_bu5_), - _bu7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0), - _bu8_= - caml_call2(Runtime_ocaml_Runtime[127],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[127],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[130],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[112],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[112],rapport_loyers,_buN_), - _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2), - _buQ_= - caml_call2(Runtime_ocaml_Runtime[127],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[127],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[115],date_courante,_buH_), - _buJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _buK_= - caml_call2(Runtime_ocaml_Runtime[130],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[112],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[112],rapport_loyers,_bus_), - _buu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$4), - _buv_= - caml_call2(Runtime_ocaml_Runtime[127],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[127],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[115],date_courante,_bum_), - _buo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bup_= - caml_call2(Runtime_ocaml_Runtime[130],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_(aide_finale) - {try - {var - _bt0_= - function(param) - {var - _bt4_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sp_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_ss_,_bt6_), - _bt7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _st_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,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[128],_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[130],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[115],date_courante,_btL_), - _btN_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _btO_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_btC_), - _btE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _btF_= - caml_call2(Runtime_ocaml_Runtime[130],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_(aide_finale) - {try - {var - _bti_= - function(param) - {var - _btm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sK_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=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$0,_btq_); - if(caml_call2(Runtime_ocaml_Runtime[128],_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$0,_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_(aide_finale) - {try - {var - _bta_= - function(param) - {var - _bte_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sW_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_sZ_,_btg_); - return caml_call2 - (Runtime_ocaml_Runtime[113], - aide_finale$0, - montant_minimal_aide_d823_16) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$121) - :aide_finale$0}, - _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[113],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[113],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[128],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[117],fraction_l832_3,_bsZ_), - _bs1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), - _bs2_=caml_call2(Runtime_ocaml_Runtime[127],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[130],date_conventionnement,_brz_); - case 2: - var _brA_=caml_call3(Runtime_ocaml_Runtime[57],1990,9,30); - return caml_call2 - (Runtime_ocaml_Runtime[130],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[130],date_courante,_bqY_), - _bq0_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bq1_= - caml_call2(Runtime_ocaml_Runtime[115],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[115],date_courante,_bqn_), - _bqp_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bqq_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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_(aide_finale) - {try - {var - _bpI_= - function(param) - {var - _bpM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$135), - _bpN_= - caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d832_24); - return caml_call2(Runtime_ocaml_Runtime[128],_bpN_,_bpM_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - 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[128], - 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_(allocation_mensuelle) - {try - {var - _bpv_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[98], - equivalence_loyer_eligible, - allocation_mensuelle)}, - _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[113],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_(allocation_mensuelle) - {try - {var - _bpa_= - function(param) - {var - _bpe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uF_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _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[118], - 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_(aide_finale) - {try - {var - _boK_= - function(param) - {var - _boO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uX_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_boQ_), - _boR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u1_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$1= - caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_boU_), - _boV_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$140); - return caml_call2 - (Runtime_ocaml_Runtime[128],aide_finale$1,_boV_) - ?aide_finale$1 - :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[127], - 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[127], - 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_(aide_finale) - {try - {var - _boq_= - function(param) - {var - _bou_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vd_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_vg_,_bow_), - _box_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vh_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,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[128],_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[113],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_(aide_finale) - {try - {var - _bog_= - function(param) - {var - _bok_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vt_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_vw_,_bom_); - return caml_call2 - (Runtime_ocaml_Runtime[113], - aide_finale$0, - montant_minimal_aide_d823_24) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$146) - :aide_finale$0}, - _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[120],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[120],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[130],date_courante,_bmD_), - _bmF_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bmG_= - caml_call2(Runtime_ocaml_Runtime[115],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[115],date_courante,_bms_), - _bmu_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bmv_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[130],date_courante,_bl5_), - _bl7_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bl8_= - caml_call2(Runtime_ocaml_Runtime[115],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[115],date_courante,_blT_), - _blV_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _blW_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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_(aide_finale) - {try - {var - _blw_= - function(param) - {var - _blA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$147), - _blB_= - caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d832_10); - return caml_call2(Runtime_ocaml_Runtime[128],_blB_,_blA_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - 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[118], - 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_(date_signature_pret) - {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) - {function _bjo_(param){throw Runtime_ocaml_Runtime[2]} - function _bjp_(param){return 0} - function _bjq_(param) - {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) - {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[130],date_signature_pret,_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) - {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) - {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[130],date_signature_pret,_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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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) - {function _aZy_(param) - {function _aZY_(param){throw Runtime_ocaml_Runtime[2]} - function _aZZ_(param){return 0} - function _aZ0_(param) - {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) - {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[130],date_signature_pret,_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[130],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) - {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) - {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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[120],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[120],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[115],date_signature_pret,_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[130],date_signature_pret,_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[130],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) - {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) - {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[120],date_signature_pret,_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[130],date_signature_pret,_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[130],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_(allocation_mensuelle) - {try - {var - _aZh_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[98], - mensualite_principale, - allocation_mensuelle)}, - _aZi_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_yl_,1)}, - _aZj_= - [0, - function(param) - {function _aZm_(param) - {var - _aZq_= - caml_call2 - (Runtime_ocaml_Runtime[93], - mensualite_principale, - montant_forfaitaire_charges_d8); - return caml_call2 - (Runtime_ocaml_Runtime[98],_aZq_,allocation_mensuelle)} - function _aZn_(param) - {var - _aZo_=caml_call3(Runtime_ocaml_Runtime[57],1999,6,30), - _aZp_= - caml_call2 - (Runtime_ocaml_Runtime[130],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[113], - 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_(allocation_mensuelle) - {try - {var - _aYR_= - function(param) - {var - _aYV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y1_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _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[118],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[130],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[115],date_courante,_aYI_), - _aYK_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aYL_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],date_courante,_aYC_), - _aYE_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aYF_= - caml_call2(Runtime_ocaml_Runtime[115],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[117], - 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[127], - 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_(aide_finale) - {try - {var - _aXT_= - function(param) - {var - _aXX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zr_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_zu_,_aXZ_), - _aX0_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zv_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$1= - caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_aX3_), - _aX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$278); - return caml_call2 - (Runtime_ocaml_Runtime[128],aide_finale$1,_aX4_) - ?aide_finale$1 - :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[123], - 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[127], - 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_(aide_finale) - {try - {var - _aXB_= - function(param) - {var - _aXF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zL_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_aXH_), - _aXI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zP_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,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[128],_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[113],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_(aide_finale) - {try - {var - _aXq_= - function(param) - {var - _aXu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _z1_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_z4_,_aXw_); - return caml_call2 - (Runtime_ocaml_Runtime[113], - aide_finale$0, - montant_minimal_aide_d832_10) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$284) - :aide_finale$0}, - _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_(pret) - {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[126],nombre_personnes_logement,_aVA_), - _aVC_=caml_call1(Runtime_ocaml_Runtime[46],cst_70), - _aVD_= - caml_call2 - (Runtime_ocaml_Runtime[126], - 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[126],menage[2][8],_aVE_); - else - var - _aVF_= - caml_call2 - (Runtime_ocaml_Runtime[126], - 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[115],date_courante,_aU5_), - _aU7_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _aU8_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aUY_), - _aU0_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _aU1_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aUR_), - _aUT_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _aUU_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aUK_), - _aUM_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,4), - _aUN_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aUD_), - _aUF_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _aUG_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aUw_), - _aUy_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,4), - _aUz_= - caml_call2(Runtime_ocaml_Runtime[130],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[125],_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[112], - 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[112], - 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[123], - 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[128], - 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[136],_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_(personne_a_charge) - {try - {var - _aS3_=function(param){return 0}, - _aS4_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,1)}, - _aS5_= - [0, - function(param) - {function _aS8_(param){return 1} - function _aS9_(param) - {if(0 === personne_a_charge[0]) - var _aS__=0; - else - var - parent=personne_a_charge[1], - _aS$_=parent[6], - _aTa_= - caml_call2 - (Runtime_ocaml_Runtime[94],parent[1],age_l161_17_2_secu), - _aTb_= - caml_call2(Runtime_ocaml_Runtime[120],_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[120],_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[120],_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[118],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_(personne_a_charge) - {try - {var - _aSF_=function(param){return 0}, - _aSG_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Cp_,1)}, - _aSH_= - function(param) - {function _aSY_(param){return 1} - function _aSZ_(param) - {if(0 === personne_a_charge[0]) - var - enfant=personne_a_charge[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[125],_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) - {function _aSL_(param){return 1} - function _aSM_(param) - {var - _aSU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Cs_, - embed_personne_a_charge, - personne_a_charge), - _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) - {function _aSO_(param){return 1} - function _aSP_(param) - {if(0 === personne_a_charge[0]) - var _aSQ_=0; - else - var - parent=personne_a_charge[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[118],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[112],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[112],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[116],_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[128],_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[136], - _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_(enfant) - {try - {var - _aPd_=function(param){return 0}, - _aPe_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_D$_,1)}, - _aPf_= - [0, - function(param) - {function _aPi_(param){return 1} - function _aPj_(param) - {var - _aPk_= - caml_call2 - (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2); - switch(enfant[2][0]) - {case 0:var _aPl_=0;break; - case 1:var _aPl_=0;break; - default:var _aPl_=1} - switch(enfant[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(enfant[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_(enfant) - {try - {var - _aOT_=function(param){return 0}, - _aOU_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ef_,1)}, - _aOV_= - [0, - function(param) - {function _aOY_(param){throw Runtime_ocaml_Runtime[2]} - function _aOZ_(param){return 0} - var - _aO0_= - [0, - function(param) - {function _aO1_(param){return 1} - function _aO2_(param) - {switch(enfant[2][0]) - {case 0:var _aPa_=0;break; - case 1:var _aPa_=1;break; - default:var _aPa_=0} - switch(enfant[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) - {function _aO4_(param){return 1} - function _aO5_(param) - {var - _aO6_= - caml_call2(Runtime_ocaml_Runtime[94],enfant[4],age_l512_3_2), - _aO7_= - caml_call2(Runtime_ocaml_Runtime[125],_aO6_,date_courante), - _aO8_= - caml_call2 - (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2), - _aO9_=caml_call2(Runtime_ocaml_Runtime[83],_aO8_,_aO7_); - switch(enfant[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_(aide_finale) - {try - {var - _aOb_= - function(param) - {var - _aOj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Fe_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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) - {function _aOg_(param){return aide_finale} - function _aOh_(param) - {if(0 === changement_logement_d842_4[0]) - var - infos=changement_logement_d842_4[1], - _aOi_= - caml_call2 - (Runtime_ocaml_Runtime[128],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[128],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[115],date_courante,_aMZ_), - _aM1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aM2_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[115],date_courante,_aMH_), - _aMJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMK_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aMA_), - _aMC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMD_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aMo_), - _aMq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMr_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aMf_), - _aMh_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMi_= - caml_call2(Runtime_ocaml_Runtime[130],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[130],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[130],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[130],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[130],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_(aide_finale) - {try - {var - _aLI_= - function(param) - {var - _aLM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$304), - _aLN_= - caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d842_15); - return caml_call2(Runtime_ocaml_Runtime[113],_aLN_,_aLM_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$305) - :caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - 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_(allocation_mensuelle) - {try - {var - _aLz_= - function(param) - {var - _aLD_= - caml_call2 - (Runtime_ocaml_Runtime[93], - equivalence_loyer, - montant_forfaitaire_charges); - return caml_call2 - (Runtime_ocaml_Runtime[98],_aLD_,allocation_mensuelle)}, - _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_(allocation_mensuelle) - {try - {var - _aLm_= - function(param) - {var - _aLq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hr_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _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[113], - _aLt_, - montant_minimal_depense_nette_)) - {var - _aLu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hv_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _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_(aide_finale) - {try - {var - _aK9_= - function(param) - {var - _aLb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HH_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_HK_,_aLd_), - _aLe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HL_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,abattement); - return caml_call2(Runtime_ocaml_Runtime[113],_aLi_,_aLh_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$308) - :caml_call2 - (Runtime_ocaml_Runtime[98],aide_finale$0,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_(aide_finale) - {try - {var - _aK2_= - function(param) - {var - _aK6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HT_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_HW_,_aK8_); - return caml_call2 - (Runtime_ocaml_Runtime[123],aide_finale$0,redevance) - ?redevance - :aide_finale$0}, - _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_(aide_finale) - {try - {var - _aKN_= - function(param) - {var - _aKR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H1_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_H4_,_aKT_), - _aKU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H5_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,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[128],_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_(aide_finale) - {try - {var - _aKG_= - function(param) - {var - _aKK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ib_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_Ie_,_aKM_); - return caml_call2 - (Runtime_ocaml_Runtime[113], - aide_finale$0, - montant_minimal_aide_d842_15) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$311) - :aide_finale$0}, - _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[130],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[130],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[115],date_courante,_aIF_), - _aIH_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aII_= - caml_call2(Runtime_ocaml_Runtime[130],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[115],date_courante,_aIv_), - _aIx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aIy_= - caml_call2(Runtime_ocaml_Runtime[130],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_(aide_finale) - {try - {var - _aIj_= - function(param) - {var - _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$314), - _aIo_= - caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d842_6); - return caml_call2(Runtime_ocaml_Runtime[113],_aIo_,_aIn_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$315) - :caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - 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_(date_calcul) - {try - {var - _ar3_=function(param){throw Runtime_ocaml_Runtime[2]}, - _ar4_=function(param){return 0}, - _ar5_= - function(param) - {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) - {var - _aHG_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), - _aHH_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aHG_), - _aHI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aHJ_= - caml_call2(Runtime_ocaml_Runtime[130],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) - {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) - {var - _aGY_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), - _aGZ_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aGY_), - _aG0_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), - _aG1_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aGe_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), - _aGf_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aGe_), - _aGg_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), - _aGh_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aFw_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), - _aFx_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aFw_), - _aFy_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), - _aFz_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aEO_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), - _aEP_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aEO_), - _aEQ_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _aER_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aD6_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _aD7_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aD6_), - _aD8_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _aD9_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aDm_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _aDn_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aDm_), - _aDo_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _aDp_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aCE_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _aCF_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aCE_), - _aCG_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), - _aCH_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aBW_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), - _aBX_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aBW_), - _aBY_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), - _aBZ_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aBc_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), - _aBd_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aBc_), - _aBe_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), - _aBf_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _aAu_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), - _aAv_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aAu_), - _aAw_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), - _aAx_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _azM_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), - _azN_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_azM_), - _azO_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), - _azP_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _ay4_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), - _ay5_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ay4_), - _ay6_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), - _ay7_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _ayk_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), - _ayl_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ayk_), - _aym_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), - _ayn_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _axC_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), - _axD_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_axC_), - _axE_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _axF_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _awT_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _awU_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_awT_), - _awV_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _awW_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _av__=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _av$_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_av__), - _awa_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), - _awb_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _avp_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), - _avq_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_avp_), - _avr_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), - _avs_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _auG_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), - _auH_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_auG_), - _auI_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), - _auJ_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _atX_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), - _atY_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_atX_), - _atZ_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), - _at0_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _atc_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), - _atd_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_atc_), - _ate_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), - _atf_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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) - {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) - {var - _ast_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), - _asu_= - caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ast_), - _asv_=caml_call3(Runtime_ocaml_Runtime[57],1992,7,1), - _asw_= - caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_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[130],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[125],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[125],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[120],date_signature_pret,_arR_), - _arT_=caml_call3(Runtime_ocaml_Runtime[57],1992,9,30), - _arU_= - caml_call2 - (Runtime_ocaml_Runtime[130],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_(allocation_mensuelle) - {try - {var - _arB_= - function(param) - {var - _arF_= - caml_call2 - (Runtime_ocaml_Runtime[93], - charges_mensuelles_pret, - montant_forfaitaire_charges); - return caml_call2 - (Runtime_ocaml_Runtime[98],_arF_,allocation_mensuelle)}, - _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_(date_calcul) - {try - {var - _aqY_= - function(param) - {var - _ary_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _J$_, - Runtime_ocaml_Runtime[16], - date_calcul), - _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[130],date_courante,_arw_); - return caml_call2(Runtime_ocaml_Runtime[29],_Kd_,_arx_)}, - _aq0_= - [0, - function(param) - {function _aq3_(param){throw Runtime_ocaml_Runtime[2]} - function _aq4_(param){return 0} - var - _aq5_= - [0, - function(param) - {function _aq6_(param) - {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], - date_calcul), - _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], - date_calcul), - _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[130],date_courante,_arm_); - return caml_call2(Runtime_ocaml_Runtime[29],_Km_,_arn_)} - var - _aq8_= - [0, - function(param) - {function _aq9_(param) - {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], - date_calcul), - _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], - date_calcul), - _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[115],date_courante,_aq$_), - _arb_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _arc_= - caml_call2(Runtime_ocaml_Runtime[130],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[118], - 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[113], - 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[130],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[123], - 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_(allocation_mensuelle) - {try - {var - _ap3_= - function(param) - {var - _ap7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L9_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _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[113], - 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_(aide_finale) - {try - {var - _apQ_= - function(param) - {var - _apU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mj_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_Mm_,_apW_), - _apX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mn_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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[113],aide_finale$0,abattement) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$384) - :caml_call2 - (Runtime_ocaml_Runtime[98],aide_finale$0,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_(aide_finale) - {try - {var - _apB_= - function(param) - {var - _apF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mv_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_My_,_apH_), - _apI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mz_, - Runtime_ocaml_Runtime[13], - aide_finale$0), - _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$0,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[128],_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_(aide_finale) - {try - {var - _apu_= - function(param) - {var - _apy_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _MH_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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$0=caml_call2(Runtime_ocaml_Runtime[27],_MK_,_apA_); - return caml_call2 - (Runtime_ocaml_Runtime[113], - aide_finale$0, - montant_minimal_aide_d842_6) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$387) - :aide_finale$0}, - _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(param0) - {var - _anx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _M__, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _anu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nh_, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _anB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nq_, - Runtime_ocaml_Runtime[13], - param0), - _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_(arg) - {try - {var - _anb_= - function(param){return caml_call1(sous_calcul_traitement[2],arg)}, - _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[126],_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[120],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[121],_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[119], - _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[118], - 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_(pret) - {try - {var - _ala_=function(param){return 0}, - _alb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ov_,1)}, - _alc_= - [0, - function(param) - {function _alf_(param){throw Runtime_ocaml_Runtime[2]} - function _alg_(param){return 0} - var - _alh_= - [0, - function(param) - {function _ali_(param){return 1} - function _alj_(param) - {switch(pret[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(pret[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 === pret[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) - {function _all_(param){return 1} - function _alm_(param) - {switch(pret[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(pret[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 === pret[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_(pret) - {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[130],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[130],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[115],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[130],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[115],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[130],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[136],_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[120],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[126],_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[126],_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[125],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(param0) - {var - _af$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RS_, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _af8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R1_, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _af5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R__, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _af1_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Si_, - Runtime_ocaml_Runtime[13], - param0), - _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(param0) - {var - _agd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sr_, - Runtime_ocaml_Runtime[13], - param0), - _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_(arg) - {try - {var - _afz_= - function(param){return caml_call1(sous_calcul_traitement[2],arg)}, - _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_(aide_finale) - {try - {var - _aeK_= - function(param) - {var - _aeO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Um_, - Runtime_ocaml_Runtime[13], - aide_finale), - _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], - aide_finale), - _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 aide_finale; - 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[123],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[123],_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(param,function_input0) - {var - _abo_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _abl_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aa8_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aaR_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aaH_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aaC_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aau_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aap_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _aak_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _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(param,function_input0) - {var - _$__=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _$$_=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(param,function_input0) - {var - _$4_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), - _$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(param,function_input0) - {var __V_=enfant_prestations_familiales_$0(function_input0); - return ! - ! - caml_call1(eligibilite_prestations_famili[2],__V_)})} - function t508(param) - {return caml_js_wrap_meth_callback - (function(param,function_input0) - {var __U_=enfant_prestations_familiales_$0(function_input0); - 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(param,function_input0) - {var __E_=personne_a_charge_of_jsoo(function_input0); - 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(param,function_input0) - {return ! - ! - caml_call1 - (eligibilite_aides_personnelle_[5],function_input0)})} - function t615(param) - {return caml_js_wrap_meth_callback - (function(param,function_input0) - {return ! - ! - caml_call1 - (eligibilite_aides_personnelle_[4],function_input0)})} - 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(param,function_input0) - {var - _Ze_= - caml_call1 - (calcul_aide_personnalisee_loge[10],function_input0); - return caml_call1(Runtime_ocaml_Runtime[43],_Ze_)})} - function t720(param) - {return caml_js_wrap_meth_callback - (function(param,function_input0) - {return ! - ! - caml_call1 - (calcul_aide_personnalisee_loge[9],function_input0)})} - 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,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfZnVuX2lucHV0cyIsInZfZnVuX25hbWUiLCJ5b2pzb25fb2ZfZXZlbnQiLCJ2X2lucHV0cyIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQwIiwiZnVuX2NhbGxzJDEiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19kaXZfZHVyX2R1ciIsImQxIiwiZDIiLCJvX2x0X2ludF9pbnQiLCJvX2x0X3JhdF9yYXQiLCJvX2x0X21vbl9tb24iLCJvX2x0X2R1cl9kdXIiLCJvX2x0X2RhdF9kYXQiLCJvX2x0ZV9pbnRfaW50Iiwib19sdGVfcmF0X3JhdCIsIm9fbHRlX21vbl9tb24iLCJvX2x0ZV9kdXJfZHVyIiwib19sdGVfZGF0X2RhdCIsIm9fZ3RfaW50X2ludCIsIm9fZ3RfcmF0X3JhdCIsIm9fZ3RfbW9uX21vbiIsIm9fZ3RfZHVyX2R1ciIsIm9fZ3RfZGF0X2RhdCIsIm9fZ3RlX2ludF9pbnQiLCJvX2d0ZV9yYXRfcmF0Iiwib19ndGVfbW9uX21vbiIsIm9fZ3RlX2R1cl9kdXIiLCJvX2d0ZV9kYXRfZGF0Iiwib19lcV9pbnRfaW50Iiwib19lcV9yYXRfcmF0Iiwib19lcV9tb25fbW9uIiwib19lcV9kdXJfZHVyIiwib19lcV9kYXRfZGF0Iiwib19mb2xkIiwib19ub3QkMCIsIm9fbGVuZ3RoJDAiLCJvX3RvcmF0X2ludCIsIm9fdG9yYXRfbW9uIiwib190b21vbmV5X3JhdCIsIm9fZ2V0RGF5Iiwib19nZXRNb250aCIsIm9fZ2V0WWVhciIsIm9fZmlyc3REYXlPZk1vbnRoIiwib19sYXN0RGF5T2ZNb250aCIsIm9fcm91bmRfbW9uIiwib19yb3VuZF9yYXQiLCJvX21pbnVzX2ludCQwIiwib19taW51c19yYXQkMCIsIm9fbWludXNfbW9uJDAiLCJvX21pbnVzX2R1ciQwIiwib19hbmQkMCIsIm9fb3IkMCIsIm9feG9yJDAiLCJvX2VxJDAiLCJvX21hcCQwIiwib19yZWR1Y2UkMCIsIm9fY29uY2F0JDAiLCJvX2ZpbHRlciQwIiwib19hZGRfaW50X2ludCQwIiwib19hZGRfcmF0X3JhdCQwIiwib19hZGRfbW9uX21vbiQwIiwib19hZGRfZGF0X2R1ciQwIiwib19hZGRfZHVyX2R1ciQwIiwib19zdWJfaW50X2ludCQwIiwib19zdWJfcmF0X3JhdCQwIiwib19zdWJfbW9uX21vbiQwIiwib19zdWJfZGF0X2RhdCQwIiwib19zdWJfZGF0X2R1ciQwIiwib19zdWJfZHVyX2R1ciQwIiwib19tdWx0X2ludF9pbnQkMCIsIm9fbXVsdF9yYXRfcmF0JDAiLCJvX211bHRfbW9uX3JhdCQwIiwib19tdWx0X2R1cl9pbnQkMCIsIm9fZGl2X2ludF9pbnQkMCIsIm9fZGl2X3JhdF9yYXQkMCIsIm9fZGl2X21vbl9tb24kMCIsIm9fZGl2X21vbl9yYXQkMCIsIm9fZGl2X2R1cl9kdXIkMCIsIm9fbHRfaW50X2ludCQwIiwib19sdF9yYXRfcmF0JDAiLCJvX2x0X21vbl9tb24kMCIsIm9fbHRfZHVyX2R1ciQwIiwib19sdF9kYXRfZGF0JDAiLCJvX2x0ZV9pbnRfaW50JDAiLCJvX2x0ZV9yYXRfcmF0JDAiLCJvX2x0ZV9tb25fbW9uJDAiLCJvX2x0ZV9kdXJfZHVyJDAiLCJvX2x0ZV9kYXRfZGF0JDAiLCJvX2d0X2ludF9pbnQkMCIsIm9fZ3RfcmF0X3JhdCQwIiwib19ndF9tb25fbW9uJDAiLCJvX2d0X2R1cl9kdXIkMCIsIm9fZ3RfZGF0X2RhdCQwIiwib19ndGVfaW50X2ludCQwIiwib19ndGVfcmF0X3JhdCQwIiwib19ndGVfbW9uX21vbiQwIiwib19ndGVfZHVyX2R1ciQwIiwib19ndGVfZGF0X2RhdCQwIiwib19lcV9pbnRfaW50JDAiLCJvX2VxX3JhdF9yYXQkMCIsIm9fZXFfbW9uX21vbiQwIiwib19lcV9kdXJfZHVyJDAiLCJvX2VxX2RhdF9kYXQkMCIsIm9fZm9sZCQwIiwiZXhuIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIm51bGwiLCJ1bmRlZmluZWQiLCJqc29vX2V4cG9ydHMiLCJldmVudCIsImR1cmF0aW9uX29mX2pzb28iLCJkIiwiZHVyYXRpb25fdG9fanNvbyIsImRheXMiLCJtb250aHMiLCJ5ZWFycyIsImRhdGVfb2ZfanNvbyIsImQkMCIsImQkMSIsImRheSIsIm1vbnRoIiwieWVhciIsImRhdGVfdG9fanNvbyIsImV2dCIsInBvcyIsInYiLCJpbmZvIiwiZXZlbnQiLCJldmVudF9tYW5hZ2VyIiwiZXhlY3V0ZV9vcl90aHJvd19lcnJvciIsImYiLCJ0aHJvd19lcnJvciIsImRlc2NyIiwicG9zJDAiLCJwb3MkMSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28iLCJlbWJlZF9wcmlzZV9lbl9jb21wdGUiLCJlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJlbWJlZF9jb2xsZWN0aXZpdGUiLCJ4JDgiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfc21pYyIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2JDAiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9zbWljX2luIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDAiLCJlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmEkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCIsImFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyIsImVuZmFudF9sZV9wbHVzX2FnZSIsImVuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVuZmFudHMiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMSIsInBvdGVudGllbF9wbHVzX2FnZV8yIiwibGVfcGx1c19hZ2UiLCJzbWljIiwic21pY19pbiIsImRhdGVfY291cmFudGUiLCJyZXNpZGVuY2UiLCJicnV0X2hvcmFpcmUiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0iLCJtb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJhZ2VfbDUxMl8zXzIiLCJzbWljX2RvdF9kYXRlX2NvdXJhbnRlIiwic21pY19kb3RfcmVzaWRlbmNlIiwicmVzdWx0Iiwic21pY19kb3RfYnJ1dF9ob3JhaXJlIiwicmVnaW1lX291dHJlX21lcl9sNzUxXzEiLCJwbGFmb25kX2w1MTJfM18yIiwiZW5mYW50IiwiY29uZGl0aW9uc19ob3JzX2FnZSIsImRyb2l0X291dmVydCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtJDAiLCJyZXNzb3VyY2VzX21lbmFnZSIsImVuZmFudHNfYV9jaGFyZ2UiLCJhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWUiLCJwcmlzZV9lbl9jb21wdGUiLCJub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzMiLCJ2ZXJzaW9uX2F2cmlsXzIwMDhfZG90X2FnZV9taW4iLCJibWFmX2RvdF9kYXRlX2NvdXJhbnRlIiwicmVzdWx0JDAiLCJibWFmX2RvdF9tb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzIiwicmVzdWx0JDEiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm8iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb24iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2UiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWciLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHMiLCJyZXN1bHQkMiIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1cyIsImVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0XyIsImVzdF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJwbGFmb25kX2lfaV9kNTIxXzMiLCJwbGFmb25kX2lfZDUyMV8zIiwiZHJvaXRfb3V2ZXJ0X2NvbXBsZW1lbnQiLCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWUiLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUiLCJub21icmVfdG90YWxfZW5mYW50cyIsInN1bTEiLCJzdW0yIiwibm9tYnJlX21veWVuX2VuZmFudHMiLCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2UiLCJkcm9pdF9vdXZlcnRfYmFzZSIsImRyb2l0X291dmVydF9tYWpvcmF0aW9uIiwiYWxsb2NhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCIsImlfZGF0ZV9jb3VyYW50ZSIsImlfZW5mYW50cyIsImlfcmVzc291cmNlc19tZW5hZ2UiLCJpX3Jlc2lkZW5jZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSQwIiwiaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbiIsImlfbW9udGFudF92ZXJzZSIsInByaXNlX2VuX2NoYXJnZV90b19qc29vIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiYXJnJDMiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZSIsImNvbnMiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8iLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIiwicHJpc2VfZW5fY29tcHRlX3RvX2pzb28iLCJwcmlzZV9lbl9jb21wdGVfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJhcmckNCIsImFyZyQ1IiwiYXJnJDYiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vIiwiYXJnJDciLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyIsImNvbGxlY3Rpdml0ZSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImZ1bmN0aW9uX2lucHV0MCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9faiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfaiIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwic21pY19pbl90b19qc29vIiwic21pY19pbl9vZl9qc29vIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDIiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwic21pYyQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkNCIsImVtYmVkX3R5cGVfcHJldCIsImVtYmVkX3RpdHVsYWlyZV9wcmV0IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4IiwiZW1iZWRfYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiZW1iZWRfbGltaXRlX3RyYW5jaGUiLCJlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwiZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSIsImVtYmVkX3BhcmVudF9vdV9hdXRyZSIsImVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsImVtYmVkX3BhcmVudGUiLCJlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2kiLCJlbWJlZF96b25lX2RfaGFiaXRhdGlvbiIsImVtYmVkX3BhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbiIsImVtYmVkX3ZlcnNlbWVudF9hIiwiZW1iZWRfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUiLCJlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXQiLCJlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlJDAiLCJlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xvIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjIiwiZW1iZWRfY29sbGVjdGl2aXRlJDAiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50IiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvJDAiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkkMCIsImVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaSIsImVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSIsImVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJlbWJlZF9wYXRyaW1vaW5lIiwiZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMiLCJlbWJlZF9wZXJzb25uZV92aXZhbnRfaGFiaXR1ZWwiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4iLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0iLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4iLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQxIiwiZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDIiLCJlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW4iLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQxIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDIiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQiLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQwIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDEiLCJlbWJlZF9zbWljJDAiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCIsImVtYmVkX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsIiwiZW1iZWRfZW5mYW50X2FfY2hhcmdlIiwiZW1iZWRfdHlwZV9iYWlsbGV1ciIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX25hdGlvbmFsaXRlIiwiZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9kZW1hbmRldXIiLCJlbWJlZF9sb2NhdGlvbiIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiIsImVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJlbWJlZF9tb2RlX29jY3VwYXRpb24iLCJlbWJlZF9sb2dlbWVudCIsImVtYmVkX21lbmFnZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wkMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSQwIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uJDAiLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQzIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0kMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ2IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDMiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ1IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDYiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQkMCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XyIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQxIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDIiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMiIsImVtYmVkX3NtaWNfaW4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wIiwiZXhvbmVyZV9jc2ciLCJ0YXV4X2NyZHMiLCJhaWRlX2ZpbmFsZSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlJDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJjcmRzIiwiYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmliIiwidGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3RpIiwidGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudCIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyQwIiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInR5cGVfbG9nZW1lbnRfZm95ZXIiLCJkYXRlX2NvbnZlbnRpb25uZW1lbnQiLCJyZWRldmFuY2UiLCJjb2VmZmljaWVudF9yX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjQiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0IiwiY29uZGl0aW9uXzJfZHVfODMyXzI1JDAiLCJwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWciLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmUiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjciLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMiLCJlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUkMCIsImFsbG9jYXRpb25fbWVuc3VlbGxlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDAiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQyIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDMiLCJkZW5vbWluYXRldXIiLCJkZW5vbWluYXRldXIkMCIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUiLCJhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW0iLCJlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQwIiwiYWlkZV9maW5hbGUkMSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEiLCJtZW5zdWFsaXRlX3ByaW5jaXBhbGUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnQiLCJkYXRlX3NpZ25hdHVyZV9wcmV0IiwibG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuIiwiZGF0ZV9lbnRyZWVfbG9nZW1lbnQiLCJjb3Byb3ByaWV0ZSIsInNpdHVhdGlvbl9yODIyXzExXzEzXzE3IiwidHlwZV9wcmV0IiwiYW5jaWVubmV0ZV9sb2dlbWVudCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTAiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMCIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMSIsInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3MiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMSIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMiIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMCIsInBsYWZvbmRfc2lnbmF0dXJlIiwicGxhZm9uZF9lbnRyZWUiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2IiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2MiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEkMCIsIm1lbnN1YWxpdGVfbWluaW1hbGUiLCJtZW5zdWFsaXRlX2VsaWdpYmxlIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfIiwibWVuYWdlIiwiZGVtYW5kZXVyIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UiLCJwcmV0Iiwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByaWV0ZSIsInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdCIsInNldWlsX2w4MjJfNV9wYXRyaW1vaW5lIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzkiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzgiLCJub21icmVfcGVyc29ubmVzX2xvZ2VtZW50IiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcCQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfJDAiLCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1ciIsImNvbmRpdGlvbnMiLCJjb25kaXRpb25fbmF0aW9uYWxpdGUiLCJwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3UiLCJwZXJzb25uZSIsImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlJDAiLCJwYXJ0cyIsInBhcnRzJDAiLCJwYXJ0cyQxIiwicGFydHMkMiIsImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYSIsImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZSIsImFnZV9sMTYxXzE3XzJfc2VjdSIsImFjYyIsInByZXN0YXRpb24iLCJlbGlnaWJpbGl0ZV9sb2dlbWVudCIsImFnZV9sMzUxXzhfMV9zZWN1IiwiZWxpZ2liaWxpdGUiLCJwZXJzb25uZV9hX2NoYXJnZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fYyIsImNvZWZmIiwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sIiwicmVzc291cmNlc19kZW1hbmRldXIiLCJyZXNzb3VyY2VzX2NvbmpvaW50IiwicGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVuIiwiZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11IiwiY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuIiwicGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZSIsImNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbSIsImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzIiwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0IiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvIiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84IiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83IiwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yIiwicmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhIiwiYWJhdHRlbWVudCIsInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZSIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyIsImxveWVyX3ByaW5jaXBhbCIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuJDAiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW0iLCJpbmZvcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDgiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1IiwibW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQyIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDMiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ1IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDYiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDkiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMiLCJlcXVpdmFsZW5jZV9sb3llciIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJkYXRlX2NhbGN1bCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiIsInNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZyIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiQwIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NlIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNiIsInNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taSIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyIiwicmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpIiwibG9jYXRpb24iLCJsb2dlbWVudGZveWVyIiwicHJvcHJpZXRhaXJlIiwibG9jYXRpb24kMCIsInByb3ByaWV0YWlyZSQwIiwiY2F0ZWdvcmllX2NhbGN1bF9hcGwiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGkiLCJiYWlsbGV1ciIsInBhcmFtMCIsInRyYWl0ZW1lbnRfZm9ybXVsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZSQwIiwibG9nZW1lbnRfZm95ZXIiLCJyZXN1bHQkMyIsInJlc3VsdCQ0IiwidHJhaXRlbWVudF9mb3JtdWxlJDEiLCJzb3VzX2NhbGN1bF90cmFpdGVtZW50IiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtIiwiaW5mb3JtYXRpb25zIiwiZGF0ZV9lbW1lbmFnZW1lbnQiLCJkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnQiLCJkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM18iLCJjb25kaXRpb25fcmFuZ19lbmZhbnQiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEkMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdCIsImRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZSIsImRhdGVfbmFpc3NhbmNlIiwiY29uZGl0aW9uX3BlcmlvZGVfZGVtZW5hZ2VtZW50IiwicGxhZm9uZF9kODIzXzIyIiwibW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzEiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzYiLCJwcm9wcmlldGUiLCJwcm9wcmlldGUkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9wcmV0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDAiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmkiLCJjb252ZW50aW9uIiwiY29udmVudGlvbiQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuIiwiYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sIiwiZHVyZWVfbDg0MV8xXzMiLCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQxIiwiZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11IiwiZGF0ZV9tYXJpYWdlIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDAiLCJlbGlnaWJpbGl0ZV9sODQxXzIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIiwiYmFpbGxldXIkMCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMiIsInJlc3VsdCQ3IiwicmVzdWx0JDgiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDMiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ1IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOCIsImFpZGVfZmluYWxlX2FwbCIsImFpZGVfZmluYWxlX2FsIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwibWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlIiwiY2FsY3VsZXR0ZV9kb3RfbWVuYWdlIiwiY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyIiwiY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZSIsImNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYSIsImNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlIiwiY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9yIiwiY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlIiwiY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDAiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQyIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDMiLCJ0eXBlX3ByZXRfdG9fanNvbyIsInR5cGVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXRfdG9fanNvbyIsInRpdHVsYWlyZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyQwIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3QiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X28iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28iLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9vZl9qc29vIiwibGltaXRlX3RyYW5jaGUiLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwicHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIiwicHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIiwicHJlc3RhdGlvbl9yZWN1ZSIsInBhcmVudF9vdV9hdXRyZV90b19qc29vIiwicGFyZW50X291X2F1dHJlX29mX2pzb28iLCJwYXJlbnRfb3VfYXV0cmUiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJwYXJlbnRlX3RvX2pzb28iLCJwYXJlbnRlX29mX2pzb28iLCJwYXJlbnRlIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nJDAiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvJDAiLCJ2ZXJzZW1lbnRfYV90b19qc29vIiwidmVyc2VtZW50X2Ffb2ZfanNvbyIsInZlcnNlbWVudF9hIiwiZGVwZW5zZV9sb2dlbWVudF90b19qc29vIiwiZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvJDAiLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4iLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4kMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyIsInNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV90b19qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyQwIiwidHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfdG9fIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl8iLCJjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyIsImNvbnZlbnRpb25fYV9uX2hfYSIsImNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnMiLCJjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50IiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50JDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDAiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTAiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X29mXyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9faiIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb2ZfaiIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3Iiwic21pY190b19qc29vJDAiLCJzbWljX29mX2pzb28kMCIsInByZXRfdG9fanNvbyIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJzbWljX2luX3RvX2pzb28kMCIsInNtaWNfaW5fb2ZfanNvbyQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29iai5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIiLCIiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7O0NBQ0MsU0FBVUE7V0FDRkM7Ozs7S0FDTEM7T0FDRTtRQUNDO1VBQXNCRiw4Q0FFaEJHO1FBQ0hDO0lBRVIsU0FBU0Q7TUFDUCxJQUFJRSxPQUFTSCxRQUFRSTtNQUNyQkQsb0JBQW9CQTthQUNiTCxvQkFDVCxDQWJEO0dBY0NBOzs7O0lDMk5GLFNBQVNPLG1CQUFtQkMsR0FBSyxTQUFRLFVBQVk7SUN6THJELFNBQVNDLGdCQUFnQkMsRUFBR0M7TUFDMUIsR0FBR0QsT0FBUTtNQUNYLEdBQUlDLFNBQVUsT0FBUSxTQUFTRDtNQUMvQixJQUFNLEtBQVE7TUFDZDtPQUFRLENBQ04sR0FBSUEsTUFBT0UsS0FBS0Q7UUFDaEJEO1FBQ0EsR0FBSUEsT0FBUSxPQUFPRTtRQUNuQkQsS0FBS0E7UUFDTEU7UUFDQSxHQUFJQSxPQUFRLGFBTWhCO0lEN0NBLElBQUlDLGtCQUFvQjtJRUF4QixTQUFTRSxvQkFBcUJDLEtBQU8sTUFBTUEsR0FBSztJQzJDaEQsSUFBSUM7SURISixTQUFTQztNQUNQLG9CQUFvQkQsa0NBQ3RCO0lGdENBLFNBQVNFLFFBQVNDLEdBQUdDLEdBQUdDO01BQ3RCckIsVUFBVW1CLGNBQ1ZuQixVQUFVb0IsY0FDVnBCLFVBQVVxQixXQUNa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RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDa0JLQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbzlFTUM7S0FRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbGxGZEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NzRUVDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0EvRVlDO0tBbUhaQztLQUNBQztLQUNBQztLQUNBQzs7O0tBbUlBQztLQUNBQztLQUNBQztLQUNBQzs7O0tDeFBGQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7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K0JBRFRvRSxnQkFMUlcsSUFQS0g7O29CQU9MRzswQ0FZNkI7SUEzSjFCLFNLeFFUQyxjTDRhZWY7TUFBSztRQUFLLCtCQUFWQSxJQUFnQzsyQkFBRztJQXBLekMsU0M3SlRnQixXRHVVV3JDLEdBQUksMkJNemNmTixPTnljV00sRUFBd0I7SUExSzFCLFNDNUpUc0MsYUR1VWFoRixHQUFJLHFCTTFjakJvQyxPTjBjYXBDLEVBQTBCO0lBM0s5QixTQzNKVGlGLFlEdVVZakYsR0FBSSxvQk0zY2hCb0MsT04yY1lwQyxFQUF5QjtJQTVLNUIsU0MxSlRrRixVRHVVVTVKO01BQXlCLHFCTTVjbkM4RyxPTjRjbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQk03Y3JDNEMsT042Y3FDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjTS9jRW9DLE9OOGNjcEM7TUFDUSxvQk0vY3RCb0M7TU4rYytDLHFCTS9jL0NBLE9OK2MyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JNaGRuQmpELFdOZ2Q0QyxxQk1oZDVDQSxPTmdkd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCTW5kZkwsT05tZFdLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQk1wZGpCcUMsT05vZGFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JNcmRoQnFDLE9OcWRZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQk10ZG5DK0csT05zZG1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJNdmRyQzZDLE9OdWRxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY016ZEVxQyxPTndkY3JDO01BQ1Esb0JNemR0QnFDO01OeWQrQyxxQk16ZC9DQSxPTnlkMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CTTFkbkJ2RCxXTjBkNEMscUJNMWQ1Q0EsT04wZHdEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjTS9kZnpELFFOK2RlLGtCSy9kZkQsTUwrZDZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7SUFuTW5DLFNDM0lUQyxzQkQrVXVDLGtDQUFhO0lBcE0zQyxTQ2hGVEMsd0JYNU9MLElVMGhCcUNoSTtJQTlOdkIsU0M1RVRpSTtNRGtUTTtPQUZzQ0M7T0FBTnJKO09BQWhCc0o7T0FBTnZKO09BRVYsU0FGZ0J1SixLQUVULFVBRitCRDtNQUN0QyxxQkFEVXRKLEtBQXNCQztJQVF0QixJQUFoQnVKLGlCTWpmQXpEO0lOaWZnQixTQ3RUaEIwRCxRRHdUWS9HO01BQ2Q7UUFFbUI7O1NBQ0osU0FOYjhHO1NBTWE7bUJBRFhFLGFBQ0FDO3FCQUNBRTtjQUNDLG1CQUhESCxrQkFHcUQsV0FOM0NoSDtjQU0rQyxrQkFGekRpSCxXQUdTO21CQUZURTtTQURXLG9CQURYSCxhQUNBQztTQUtVLHdCQVhaSCxjQU1FRyxTQUNBRTtTQUlVLFNBQVZDO1FBQVU7b0JBQ2U7SUFaWCxTQ3BUaEJDLGtCRGtVZ0Isa0JBZGhCUCxtQkFjeUQ7SUFkekMsU0N2VGhCUSxLRHVVS0M7TUFDUCxjQUNBLDZCQUZPQSxRQUVTO0lBRVY7c0RDeFVKRjtJRDZVb0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0M5aUJwRDVHO09BQ0FGOzs7Ozs7Ozs7Ozs7OztPQVNBRztPQUNBRztPQTZCQUM7T0V5Q1FRO09GdkNSQztPQUlBUjtPQ2xDQUM7T0FDQUM7T0FDQUM7T0FNQUM7T0FDQUM7T0FDQUM7O09EbUdBTztPQUVBQztPQUVBRztPQURBRDtPQUVBRTtPQUVBQztPQ3JHQUk7T0FEQUM7T0VRQUM7T0N4QkFHO09DQUFDO09BQ0FDO09MaUlBMEM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUU7T0FEQUQ7T0FHQUc7T0FEQUQ7T0toSkFyRDtPQURBQztPQUVBTjtPQXFCQTBGO09BQ0FuRjtPQUNBa0Y7T0FFQTdFO09BQ0FGO09BQ0FHO09BQ0FHO09BSkF3RTtPTDhJQUQ7T0FDQXRFO09BQ0FxRTtPQUNBRDtPQUNBRDtPS3ZKQWpFO09BQ0FDO09BU0ErRDtPRC9CQTdEO09BREFDO09BRUFGO09Ka0xBNkQ7T0FDQWpEO09JOUlBVDtPSmdKQU87T0FDQUM7T0FDQWlEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09JektBRDtPQUNBbkM7T0F5SEFrQzs7T0orREFkO09BSUFDO09BQ0FXO09BQ0FQO09BQ0E1RTtPRHNMSXFDO09DckxKNkM7SUQ2VW9EOzs7OztPQzlpQnBENUc7T0FDQUY7O09BU0FHO09BQ0FHO09BNkJBQztPRXlDUVE7T0Z2Q1JDO09BSUFSO09DbENBQztPQUNBQztPQUNBQztPQU1BQztPQUNBQztPQUNBQzs7T0RtR0FPO09BRUFDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFDO09DckdBSTtPQURBQztPRVFBQztPQ3hCQUc7T0NBQUM7T0FDQUM7T0xpSUEwQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPS2pKQXREO09BREFDO09BRUFOO09BcUJBMEY7T0FDQW5GO09BQ0FrRjtPQUVBN0U7T0FDQUY7T0FDQUc7T0FDQUc7T0FKQXdFO09MOElBRDtPQUNBdEU7T0FDQXFFO09BQ0FEO09BQ0FEO09LdkpBakU7T0FDQUM7T0FTQStEO09EL0JBN0Q7T0FEQUM7T0FFQUY7T0prTEE2RDtPQUNBakQ7T0k5SUFUO09KZ0pBTztPQUNBQztPQUNBaUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0l6S0FEO09BQ0FuQztPQXlIQWtDO09KK0RBZDtPQUlBQztPQUNBVztPQUNBUDtPQUNBNUU7T0FDQWtGO0lENlVvRDthTy9pQnBEb0IsS0FBS3ZJLEdBQUksVUFBSkEsRUFBVTthQUNmd0ksTUFBTXhJLEdBQUksVUFBSkEsRUFBVzthQUVqQnlJLGVBQVUseUJBRUk7YUFFZEMsZ0JBQVcseUJBRUU7YUFFYkM7TUFBWSxtQkFDSixJQUFMM0ksV0FBSyxVQUFMQSxHQUNNLFFBQUk7YUFFYjRJO01BQWEsa0JBQ0wsU0FDQyxJQUFMNUksV0FBSyxVQUFMQSxFQUFXO2FBRWY2SSxTQUFTL0ksRUFFWGdKO01qQnZDSCxTaUJ1Q0dBLE1BRFUsSUFBTDlJLEVBQ0w4SSxLQURlLHFCQURKaEosRUFDTkUsSUFDVyxPQUFoQjhJO2FBRUVDLFVBQVVqSixFQUNaZ0o7TWpCMUNILFNpQjBDR0EsS0FBZSxPQUFmQSxFQUNXLElBQUw5SSxFQUROOEksS0FDaUIscUJBRkxoSixFQUVORTthQUVKZ0osSUFBS1QsS0FBTUM7TWpCN0NoQixtQmlCOENhLElBQUx4SSxXQUFVLHFCQURSdUksS0FDRnZJO01BQ00sSUFBTGlKO01BQVcscUJBRkpULE1BRVBTO2FBRUpDLEtBQU1YLEtBQU1DO01qQmpEakIsbUJpQmtEYSxJQUFMeEksV0FBSyxrQkFERnVJLEtBQ0h2STtNQUNNLElBQUxpSjtNQUFLLGtCQUZHVCxNQUVSUzthQU1KRSxNQUFPWixLQUFNQyxNQUFNWSxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDSixJQUFOQyxHQURVRCxNQUNKLGtCQURYZCxVQUNLZTs7aUJBRE9GO2lCQUFHQyxPQUVGLElBQU5FLEtBRlFGLE1BRUYsa0JBRlBiLFdBRUNlO01BQ3FCLFFBQUs7YUFFeENDLFFBQVNqQixLQUFNQyxNQUFNWSxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDTixJQUFOQyxHQURZRCxNQUNOLGtCQURUZCxVQUNHZTtRQUVLO2VBSElGO2VBQUdDLE1BSVA7TUFGRyxJQUFORSxLQUZVRjtNQUVKLGtCQUZMYixXQUVEZSxLQUVJOzs7O09BaERsQmhCO09BQ0FDO09BRUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFFO09BSUFDO09BSUFFOzs7T0FRQUM7T0FLQUs7O0lqQjlETDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T2tCK0NLQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJbEIvQ0w7YW1CMEJzQkMsU0FBU3JHLEdBQUksbUJBQUpBLG1CQUFrQjthQVUzQnNHLGFBQWFsSixFQUFFN0UsR0FBSSxzQkFBTjZFLEVBQUU3RSxFQUF5QzthQUN4RGdPLGlCQUFpQm5KLEVBQUU3RSxFQUFFb0UsR0FDeEMsc0JBRG9DUyxFQUFFN0UsRUFBRW9FLEVBQ0Q7O0tBV3JDNko7S0FDQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7S0FDQUM7YUF3QkVDLEtBQU1DO01BQ0EsZ0JBREFBO1FBRUk7eUNBRkpBO1NBVEcsTUFQSUQ7U0FZa0MsVUFabENBO1FBWWtDLFVBVjdDOUssTUFPQWdMO2tDQVN5QjthQU0zQkMsT0FDRXZLO01uQnZHVDtTbUJ5R1UsU0FGREEsTUFFaUIsYUFGakJBO1lBQ0F3SyxLQURBeEs7TVh5YUEsa0JXeGFBd0ssS0FEQXhLOztNQU1vQixHQUFuQixTQUxEd0ssU0FLb0IsYUFMcEJBO1lBSUFsSSxLQUpBa0k7d0JBSUFsSSxLQUVHO01BRUYsb0JBSkRBO2VBSkFrSTtlQVNHLDBDQUF1QzthQUUzQmxJLEtBQU1rSSxNQUNwQixPQURvQkEsT0FDQzthQUVQQyxHQUFJRCxNQUNsQixPQURrQkEsT0FDRzs7OEJBakJ4QkQsT0FhaUJqSSxLQUdBbUk7S0FJbkJDO0tBQ0FDO0tBQ0FDO0tBU0VDO2FBR0FDLE9BQU9ySjtNQUNULGNBRFNBLE1BQ1QsVUFEU0EsS0FIUG9KO01BS0E7TUFDRixnQ0FIU3BKLEVBR0Q7YUFFTnNKLE9BQU8vSyxHQUFJLE9BQUpBLG9CQUFvQzthQUUzQ2dMLHdCQUF3QjNDLEVBQUU0QyxFQUFFQztNQUM5QixjQUQ0QkQsTUFDNUIsVUFENEJBLElBQ04sT0FESTVDLFlBRXhCOzhCQUY0QjZDLFNBRWI7YUFHZkMsUUFBUTlDLEVBQUU0QztNQUNaLHdCQURVNUMsRUFBRTRDO01BRVosaUNBRlU1QyxFQUFFNEMsRUFFRDthQUdURyxhQUFhL0MsRUFBRTRDO01BQ2pCLHdCQURlNUMsRUFBRTRDO01BRWpCLHNDQUZlNUMsRUFBRTRDLEVBRUQ7YUFHZEksUUFBUWhELEVBQUU0QyxFQUFFakw7TUFDZCx3QkFEVXFJLEVBQUU0QztNQUVaLHlCQUZVNUMsRUFBRTRDLEVBQUVqTCxFQUVEO2FBR1hzTCxVQUFVakQsRUFBRTRDO01BQ2Qsd0JBRFk1QyxFQUFFNEM7TUFFZCwyQkFGWTVDLEVBQUU0QyxFQUVEO2FBR1hNLFVBQVVsRCxFQUFFNEM7TUFDZCx3QkFEWTVDLEVBQUU0QztNQUVkLG1DQUZZNUMsRUFBRTRDLEVBRUQ7YUFLWE8sU0FBUzdDLEdBQUc4QyxHQUFHN0MsR0FBRzhDLEdBQUdqSztNQUVGOzs7UUFGRUE7Ozs7UUFBVGdLOzs7VUFDYSxPQURoQjlDLE1BQVlsSCxTQUFUZ0s7Ozs7UUFBTUM7OztVQUVDLE9BRko5QyxNQUFNbkgsU0FBSGlLO1FBSWY7b0JBSmtCaks7U0FJbEIsVUFBZSwyQkFKVGtILEdBQUc4QyxHQUFHN0MsR0FBRzhDLEdBQUdqSztRQUltQjtNQURyQyw4Q0FDcUM7Ozs7OztPQTNDeENxSjtPQUtBQztPQU9BSTtPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQU9BQzs7OztzQm5CL0tQOzs7T21CcUlPWDs7O09BM0dlNUI7T0FVQUM7T0FDQUM7T0FZakJDO09BQ0FDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztPQUlBQztPQUNBQztPQUNBQztVQXdCRUM7O09BNEJGTTtPQUNBQztPQUNBQzs7OzthQ3RHQWUsdUJBQXNDLGVBQWU7YUFLckRDLGlCQUFrQkM7TUFDRyxJQUFuQkMsUUFEZ0JEO01BRXBCLFNBUEVGO01BT0Y7UUFFZSxJQUFUSSxPQUFTLFdBSFhEO1FBSUYsc0JBTGtCRCxJQUlkRTtRQUlKLE9BSklBO1lBR0QxRDttQ0FDSCx5QkFBb0QsTUFEakRBLENBQ3dELEVBQTNELE1BREdBLEVBRUk7YUFJUDJELHFCQUFzQkg7TUFDRCxJQUFuQkMsUUFEb0JEO01BRXhCLFNBcEJFRjtNQW1CcUIsSUFFbkJJLE9BQVMsV0FGVEQ7TUFHSixzQkFKd0JELElBR3BCRTtNQUNKLE9BRElBLE1BRUU7YUFPSkUsTUFRRUM7TUFFSixJQUFJQyxFQUFKLGFBRklEO01BRUosT0FBSUMsVUFGQUQsT0FFQUMsVUFGQUQsSUFLQyxpQkFMREEsSUFLcUI7YUNOdkJFLFVEU1dGO01BRWIsSUFBSUMsRUFBSixhQUZhRDtNQUViLE9BQUlDLFVBRlNELE9BRVRDLFVBRlNELElBS1IscUJBTFFBLElBS2dCOzs7bUJBOUMzQk4saUJBYUFJLHFCQVlBQyxNQ09BRzs7YUN5VkVDLFFEdlZRaE4sR0FDSixJQUFKVyxFQUFJLHNCQUNSLE9BRllYLEVBRVosT0FESVcsQ0FFZ0I7YUFFbEJzTSxTQUFVL007TUFDSixJQUFKNE0sRUFBSSxhQURJNU07U0FDUjRNLG9DQUlELE9BTFM1TTtNQUUwRCxzQ0FGMURBLEVBTVQ7YUFHRGdOLE9BQVE5SyxHQUFjLG9CQUFkQSxjQUFrRDthQVMxRCtLLE1BQUluTixFQUFFVztNQUNSOzs7bUNBRFFBO3FERHpETjRMLGlCQ3lETTVMO2dCQUNBLGtCQURGWCxTQUNZO2FBRWhCb04sUUFBUXBOLEVBQUVXO01BQ1QsVUFEU0E7UUFFUDsyQkFGT0E7U0FFUCxrQkFGT0Esa0JENURWNEwsaUJDNERVNUw7UUFFTywyQkFGVFg7TUFHTDs7O21DQUhPVztxREQ1RFY0TCxpQkM0RFU1TDtnQkFHQyxrQkFISFgsU0FHYTs7Ozs7T0FOckJtTjtPQVRBRDtPQVRBRDtPQXFCQUc7T0M2VEVKO09EelZGRDtPQ3lWRUM7T0RsVkZDO09BU0FDOzthQ25EQUcsYUFBVyxRQUFHO2FBRWRDLFNBQU8zTSxTQUFPLFVBQVBBLEVBRlAwTSxNQUU2QjthQUU3QkUsS0FBSzVNLEVBQUU2TSxZQUFVLFVBQVo3TSxFQUFFNk0sS0FBd0I7YUFFM0JDLFNBQU9DLEtBQUtDO01BQ1oscUJBRE9EO01BQ1A7WUFFS0YsY0FBSDdNO1FBQXFCLFVBQXJCQSxpQnRCakNYLE9zQjhCUzhNLFNBR0tELEtBSE9HO01BRVQsa0JBRlNBLE9BRzRCO2FBRXhDQyxNQUFJNU4sRUFBRTZOO01BQWUscUJBQWZBO01BQWU7UUFFSTtTQUFwQkw7U0FBSDdNO1NBQXVCLG9CdEJyQ2xDLE9zQm1DU2lOLE1BQUk1TixFQUVDd047UUFBZSxxQkFGaEJ4TixFQUVGVztNQURDLFFBQ2lDO2FBRXBDbU4sV0FBVzlOLEVBQUU2TjtNdEJ2Q3RCLElzQnVDc0JFO01BQVM7UUFBTSxxQkFBZkE7UUFBZTtVQUd4QixJQURDUCxjQUFIN00sV0FDRSxtQkFIT1gsRUFFVFc7VUFDRTtZQUVRLElBQUxDO1lBQWMsVUFBZEEsaUJ0QjVDaEIsT3NCdUNTa04sV0FBVzlOLEVBRU53TjtVQUNELElBSFNPLE1BRVJQOztRQURGLFNBSW9DO2FBRXZDUSxPQUFPaE8sRUFBRTZOO010QjlDbEIsSXNCOENrQkU7TUFBUztRQUFNLHFCQUFmQTtRQUFlO2NBRW5CUCxjQUFIN007VUFDRCxjQUhNWCxFQUVMVztXQUVVLFVBRlZBLGlCdEJoRFgsT3NCOENTcU4sT0FBT2hPLEVBRUZ3TjtjQUZJTyxNQUVKUDs7UUFERixTQUlnQjthQUVuQlMsT0FBT0o7TUFBZSxxQkFBZkE7TUFBZTtZQUVqQkwsY0FBSDdNO1FBQ0ksZ0JBREpBLGlCdEJ2RFgsT3NCcURTc04sT0FFS1Q7TUFERixRQUVtQjthQUV0QlUsU0FBU2xPLEVBQUU2TjtNQUFlLHFCQUFmQTtNQUFlO1FBR2pCO1NBREpMO1NBQUg3TTs7U0FDTyxvQnRCN0RsQixPc0IwRFN1TixTQUFTbE8sRUFFSndOO1FBQ0YsMkJBSE14TixFQUVQVztNQURDLFFBRTBCO2FBSTdCd04sVUFBVW5PLEVBQUVvTyxJQUFJUDtVQUFKUSxVQUFJTjtNQUN0QjtRQUFNLHFCQURnQkE7UUFDaEI7VUFHVTtXQURIUDtXQUFIN007V0FDTSxpQkFKQVgsRUFBRXFPLE1BR1IxTjtXQUhRME47V0FBSU4sTUFHVFA7O1FBREYsT0FGT2EsTUFLUTthQUVwQi9LLEtBQUt0RCxFQUFFNk47TXRCeEVoQixJc0J3RWdCRTtNQUNiO1FBQU0scUJBRE9BO1FBQ1A7Y0FFT1AsY0FBSDdNO1VBQ0osV0FKS1gsRUFHRFc7Y0FIR29OLE1BR0FQOztRQURGLFNBR007YUFFWGUsT0FBT3ZPLEVBQUV3TztNQUNULHFCQURPeE8sRUFBRXdPO01BQ1Q7NkJBRUtDLGVBQUg5TjtRQUFtQixVQUFuQkEsaUJ0QmxGWCxPc0IrRVM0TixPQUFPdk8sRUFHRnlPO01BREQsUUFDNkI7YUFFckNDLFNBQVNDLElBQ0wscUJBREtBLE1BQ0wsZ0JBSUc7YUFFUEMsT0FBT0Q7TUFDSCxxQkFER0E7TUFDSCxjQUNLRSxjQUFIbE8sMEJBQUdrTztNQUdQLFFBQUk7YUFXR0MsU0FBT0M7VUFQRDdKLE9BQUt5SixHQU9KSTtNQU5sQjtRQUFNLHFCQURnQko7UUFDaEI7VUFJRix5QkFMYXpKLHlCQUFLeUo7UUFHbEIsT0FIYXpKLEtBUUY7YUFVSjhKLE1BQU1oUCxFQUFFK087VUFSRGpULElBQUU2UyxHQVFESTtNQVBuQjtRQUFNLHFCQURjSjtRQUNkO2NBR0tFLGNBQUhsTztVQUNKLFdBR2FYLEVBUkNsRSxFQUlWNkU7VUFDSixRQUxjN0UsZ0JBQUU2UyxHQUlURTs7UUFEUCxTQU1ZO2FBVUxJLFdBQVdqUCxFQUFFa1AsT0FBS0g7VUFSTjdKLEtBUUNnSyxPQVJJcFQsSUFBRTZTLEdBUURJO01BUDdCO1FBQU0scUJBRHdCSjtRQUN4QjtVQUlTO1dBREpFO1dBQUhsTztXQUNPLGtCQUdPWCxFQVJDa0YsS0FBS3BKLEVBSXBCNkU7V0FDTyxJQUxhN0U7V0FBTG9KO1dBQUtwSjtXQUFFNlMsR0FJbkJFOztRQURQLE9BSG1CM0osS0FTRzthQUVwQmlLLFFBQVFDLEVBQUVUO010QnBJbkIsSXNCb0ltQkU7TUFDaEI7UUFBTSxxQkFEVUE7UUFDVjtVQUlGLElBRE9FLGNBQUhwTyxXQUNKLGdCQUxVeU8sRUFJTnpPO1VBQ0osYUFMWWtPLEtBSUxFO1VBRFA7aUJBRW1CO2FBRWpCTSxPQUFPRCxFQUFFVDtNdEIzSWxCLElzQjJJa0JFO01BQ2Y7UUFBTSxxQkFEU0E7UUFDVDtVQUlGLElBRE9FLGNBQUhwTyxXQUNKLGdCQUxTeU8sRUFJTHpPO1VBQ0osUUFGQTtVQUVBLElBTFdrTyxLQUlKRTs7UUFEUCxTQUVrQjthQUVoQk8sS0FBS0YsRUFBRVQ7TXRCbEpoQixJc0JrSmdCRTtNQUNiO1FBQU0scUJBRE9BO1FBQ1A7Y0FHS0UsY0FBSHBPO1VBQ0QsY0FMSXlPLEVBSUh6TyxHQUNRLFVBRFJBO2NBSktrTyxLQUlGRTs7UUFEUCxTQUVpQzthQUUvQlEsU0FBU3ZQLEVBQUUyTztNdEJ6SnBCLElzQnlKb0JFO01BQ2pCO1FBQU0scUJBRFdBO1FBQ1g7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxrQkFMS1gsRUFJUFc7VUFDRSxHQUdKK0wsT0FDRSxPQURGQTtVQUhJLElBTE9tQyxLQUlORTs7UUFEUCxTQU1VO2FBU1JTLE1BQU14UCxFQUFFMk8sR0FBR2M7VUFBSFosUUFBR2E7TUFDakI7UUFBTSxxQkFEUWI7UUFDUjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxPK087VUFLUDtnQkFHS0MsZ0JBQUgvTztZQUNKLFdBVElaLEVBSUpXLEVBSUlDO2dCQVJFaU8sS0FJSEUsS0FKTVcsS0FRRkM7O1VBRFA7UUFKSixTQU9pQjthQUVmQyxXQUFXNVAsRUFBRWtGLEtBQUt5SixHQUFHYztVQUFSckssWUFBS3lKLFFBQUdhO01BQzNCO1FBQU0scUJBRGtCYjtRQUNsQjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxpQitPO1VBS2pCO1lBSVM7YUFESkM7YUFBSC9PO2FBQ08sa0JBVEZaLEVBQUVvRixPQUlYekUsRUFJSUM7YUFST3dFO2FBQUt5SixLQUliRTthQUpnQlcsS0FRWkM7O1VBRFAsT0FQV3ZLO1FBR2YsT0FIZUEsT0FVWTthQUV6QnlLLFNBQVM3UCxFQUFFMk8sR0FBR2M7VUFBSFosUUFBR2E7TUFDcEI7UUFBTSxxQkFEV2I7UUFDWDtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxVK087VUFLVjtZQUlGLElBRE9DLGdCQUFIL08sYUFDSixnQkFUT1osRUFJUFcsRUFJSUM7WUFDSixhQVRTaU8sS0FJTkUsS0FKU1csS0FRTEM7WUFEUDs7UUFKSixTQU02QjthQUUzQkcsUUFBUTlQLEVBQUUyTyxHQUFHYztVQUFIWixRQUFHYTtNQUNuQjtRQUFNLHFCQURVYjtRQUNWO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTFMrTztVQUtUO1lBSUYsSUFET0MsZ0JBQUgvTyxhQUNKLGdCQVRNWixFQUlOVyxFQUlJQztZQUNKLFFBRkE7WUFFQSxJQVRRaU8sS0FJTEUsS0FKUVcsS0FRSkM7O1VBRFA7UUFKSixTQU00QjthQUUxQkksUUFBTUMsR0FBR3JCLEdBQUdjO1VBQUhaLFFBQUdhO01BQ2xCO1FBQU0scUJBRFNiLFFBQ0gsbUJBRE1hO1FBQ047O1lBSVI7YUFEcUJDO2FBQUgvTzthQUFYbU87YUFBSHBPO2FBQ0osZ0JBTFFxUCxHQUlKclAsRUFBY0M7WUFDbEIsYUFMV2lPLEtBSUpFLEtBSk9XLEtBSU9DOzs7U0FEckI7UUFLQSxTQUFLO2FBRUhNLFVBQVFDLElBQUl2QixHQUFHYztVQUFIWixRQUFHYTtNQUNyQjtRQUFNLHFCQURZYixRQUNOLG1CQURTYTtRQUNUOzs7WUFJQSxJQURhQyxnQkFBSC9PLGFBQ1YsYUFMRXNQLFNBSVF0UDtZQUNWLFNBQUpzQyxPQUxVMkwsVUFBR2EsS0FJSUM7WUFFTixPQURYek07VUFLSjtRQUZBLG9CQUVFO2FBTUFpTixTQUFTblEsRUFBRWxFLEVBQUVzVTtNQUNuQixHQURpQnRVLElBQUVzVTtRQUNMO2NBREd0VTtTQUVKLG9CdEJyUGhCLE9zQm1QU3FVLFNBQVNuUSxPQUFJb1E7UUFFWCxxQkFGT3BRLEVBQUVsRTtNQUtmLFFBQUc7YUFFSHVVLEtBQUsvUCxFQUFFTjtNQUNULFFBRE9NO1FBSUwsaUN0QjlQTCxPc0JtUFM2UCxTQU9HblEsT0FBRk07TUFFTCxnQ0FFYzthQUVWZ1EsT0FBTzNQO01BQ0osVUFESUEsaUJ0QmhRaEIsT3NCZ1FTMlAsT0FBTzNQLFNBQ0s7YUFFWjRQLFFBQVF2UTtNQUNILG9CdEJwUWQsT3NCbVFTdVEsUUFBUXZRO01BQ1IscUJBRFFBLFVBQ087YUFNZndRLGVBQWU3QjtNQUNyQjtNQUFVLGdCQURXQSxrQnRCMVF4QixPc0IwUVM2QixlQUFlN0IsZUFDVzthQU85QjhCLE1BQU05QjtNQUNGLHFCQURFQTtNQUNGO1FBSWtCO1NBRGJFO1NBQUhsTztTQUNnQixvQnRCdlIzQixPc0IwUVM2UCxlQVFFN0I7UUFLSyxVQURMaE8saUJ0QnRSWCxPc0I4QlM4TSxTQXdQS29CO01BRFAsUUFFd0M7YUFNdEM2QixTQUFTMVEsRUFBRVc7TUFDVCxJQUFKQyxFQUFJLFdBRE9aLEVBQUVXO01BRVIsVUFETEMsaUJ0QjlSUCxPc0I2UlM4UCxTQUFTMVEsRUFDWFksU0FDa0I7YUFXcEIrUCxRQUFRM1EsRUFBRVc7TUFDTCxvQnRCM1NWLE9zQjZSUytQLFNBYUkxUSxFQUFFVztNQUNMLHNCdEIzU1YsVXNCMFNlQSxRQUNTO2FBSWZpUSxTQUFTNVEsRUFBRWxFLEVBQUU2UztNQUNiLHFCQURhQTtNQUNiO1FBSVc7U0FETkU7U0FBSGxPO2NBSlM3RTtTQUtBLG9CdEJwVHBCLE9zQitTUzhVLFNBQVM1USxPQUlKNk87UUFDRCxxQkFMSzdPLEVBQUVsRSxFQUlUNkU7TUFESixRQUVpQzthQUUxQmtRLEtBQUs3USxFQUFFMk87TUFDbEIsaUN0QnZUSCxPc0IrU1NpQyxTQU9VNVEsT0FBRTJPLFNBQ0g7YUFRVG1DLFVBQVU5USxFQUFFUSxFQUFFbU87TUFDZCxxQkFEY0E7TUFDZDtRQUlNLElBRERFLGNBQUhsTyxXQUNJLGVBTElYLEVBQUVRLEVBSVZHO1FBRUssVUFETG9RLG1CdEJwVVgsT3NCK1RTRCxVQUFVOVEsRUFLUitRLElBREdsQztNQURQLFFBRzBCO2FBRTVCbUMsS0FBS2hSLEVBQUVRLEVBQUVtTztNQUNKLG9CdEJ4VVYsT3NCK1RTbUMsVUFRQzlRLEVBQUVRLEVBQUVtTztNQUNKLHNCdEJ4VVYsVXNCdVVZbk8sUUFDZ0I7YUFLbkJ5USxTQUFTM1EsRUFBRXFPO01BQ2pCLGFBRGVyTztlQXJUYitNOztpQkEwVFEscUJBTE9zQjtpQkFLUDt1QkFHS0UsY0FBSGxPO21CQUNLLFVBRExBLEVBQ0ssU0FURkwsVUFRQXVPO2lCQURQLFFBRTJCO2FBRWpDcUMsS0FBSzVRLEVBQUVxTztNQUNULEdBRE9yTyxNQUNPLDBCQUFzQixnQkFEN0JBLEVBQUVxTyxHQUVJO2FBb0JYd0MsS0FBSzdRLEVBQUVxTztNQUNULFlBRE9yTzs7aUJBQUVxTzs7dUJBZFF5QyxJQWNWOVEsRUFkWXVPLEtBY1ZGO21CQWJUO3FCQUFNLHFCQURhRTtxQkFDYjt1QkFJRixzQkFMYXVDO3VCQUtiLFNBQUlDLElBRUYsa0JBSEt0Qzt1QkFDUCxJQUxhcUMsSUFLVEMsSUFMV3hDLEtBSVJFOztxQkFEUCxTQWlCZTtlQUxMLHlCQUtLO2FBRWJ1QyxXQUFXbEMsRUFBRVQ7TUFDYixxQkFEYUE7TUFDYjtZQUdLRSxjQUFIbE87UUFDRCxrQkFMVXlPLEVBSVR6TztxQ3RCMVhYLE9zQnNYUzJRLFdBQVdsQyxFQUlOUDs7TUFEUCxRQUU4QzthQUU1QzBDLFdBQVduQyxFQUFFVDtNdEI3WHRCLElzQjZYc0JFO01BQ25CO1FBQU0sSUFHSjJDLEtBSEksV0FEYTNDO1FBQ2IsR0FHSjJDO2NBQVN6QyxLQUFUeUMsUUFBTTdRLEVBQU42UTtVQUNLLGNBTFVwQyxFQUlUek8sUUFKV2tPLEtBSVJFO1VBQzZCLE9BRHRDeUM7UUFERSxTQUV3QzthQUV0Q0MsTUFBTXpCLEdBQUdyQjtNQUNULHFCQURTQTtNQUNUO1FBSXdEO1NBRG5ERTtTQUFIbE87U0FDc0QsZ0JBTGxEcVAsR0FJSnJQO1NBQzBDLG9CdEJ6WXJELE9zQjZYUzRRLGdCQVdLMUM7U0FDOEIsb0J0QnpZNUMsT3NCb1lTNEMsTUFBTXpCO1NBS2lCLGdCQUxqQkEsR0FJSnJQO1NBQ1Msb0J0QnpZcEIsT3NCc1hTMlEsZ0JBa0JLekM7UUFDRCx5QnRCelliLFVzQndZV2xPO01BREosUUFFcUU7O2FBeUJyRStRLGVBR0Esa0JBQWtCO2FBaUJoQkMsUUFBUWhEO01BQ2QsU0ExQmFvQztRQTJCTCxxQkFGTXBDO1FBRU4sY0FHS0UsY0FBSGxPLFdBQ0ssVUFETEEsRUFDSyxRQURGa087UUFEUCxRQUVvQjtNQTlCZCxJQU5Hck8sRUFNSCxRQURDdVE7TUFDRDtRQUxBLHNCQURHdlE7UUFDSCxvQkFER0Esa0JGN1hiK0wsaUJFNlhhL0wsS0FxQ2Q7YUFFS29SLEtBQUtqRDtNQUNYLFNBckJVM087UUFzQkYscUJBRkcyTztRQUVILGNBR0tFLGNBQUhsTyxXQUNLLFVBRExBLEVBQ0ssS0FERmtPO1FBRFAsUUFFaUI7TUF6QlIsSUFBVGdELFVBREk3UjtNQUNLO1FBS0gsSUFBSkEsRUFBSSxTQUxONlIsT0FWRkgsU0FlUSxrQkFBSjFSLElBQ0QsQ0FvQk47YUFHSzhSLElBQUluRCxHQUFHYztNQUNQLHFCQURJZDtNQUNKO1FBSUksSUFEQ0UsY0FBSGxPLFdBQ0UsbUJBTEc4TztRQUtIO2NBR0tDLGdCQUFIOU87VUFDVSxhQUxkRCxFQUlJQyxrQnRCamRmLE9zQnljU2tSLElBSUtqRCxLQUlJYTtRQURQO01BSkosUUFNNEI7YUFFMUJxQyxLQUFLL1IsRUFBRTJPLEdBQUdjO01BQ1YscUJBRE9kO01BQ1A7UUFJSSxJQURDRSxjQUFIbE8sV0FDRSxtQkFMTThPO1FBS047VUFJVztXQUROQztXQUFIOU87V0FDUyxvQnRCN2R4QixPc0JvZFNtUixLQUFLL1IsRUFJQTZPLEtBSUlhO1VBQ0QscUJBVEgxUCxFQUlIVyxFQUlJQztRQURKO01BSkosUUFNOEI7YUFFNUJvUixXQUFXckQsR0FBR2M7TUFDZCxxQkFEV2Q7TUFDWDtZQUdLRSxjQUFIbE87UUFDSyxVQURMQSxpQnRCbmVYLE9zQitkU3FSLFdBQWN2QyxHQUlUWjtNQURQLGtCQUhnQlksS0FLVTthQTRCNUJ3QyxjQUFjL0IsSUFBSXZQLEVBQUVnTyxHQUFHL04sRUFBRTZPO01BQ3hCLHNCQURhUyxJQUFJdlAsRUFBS0M7Ozs7a0JBYm5CLHFCQWFxQjZPO2tCQWJyQjt3QkFHS0MsY0FBSDlPOzJCQVVOcVIsY0FBYy9CLElBQUl2UCxFQUFFZ08sR0FWZC9OLEVBQUc4TztrQkFEUCxVQVdnQi9PLEVBQUVnTzs7Z0JBQUZoTzs7a0JBTmQscUJBTWdCZ087a0JBTmhCO3dCQUdLRSxjQUFIbE87MkJBR05zUixjQUFjL0IsSUFIUnZQLEVBQUdrTyxLQUdjak8sRUFBRTZPO2tCQUp2QixVQUlxQjdPLEVBQUU2TyxLQUlXO2FBRXBDeUMsYUFBYWhDLElBQUl2QixHQUFHYztNQUNoQixxQkFEYWQsTUFDUCxtQkFEVWM7TUFDVjs7Y0FNZUMsZ0JBQUg5TyxhQUFYaU8sY0FBSGxPO2lCQWJSc1IsY0FNYS9CLElBT0x2UCxFQUFHa08sS0FBV2pPLEVBQUc4TztZQUhsQnhNOztxQkFESCxhQUNHQTtNQUVILE9BRkdBLENBSXdCO2FBRzNCaVAsUUFBUUM7TUFDUixxQkFEUUE7TUFDUjtZQUdVQyxnQ0FBUDFSO1FBQ0ksVUFESkEsaUJ0QnJoQlosT3NCaWhCU3dSLFFBSVVFO01BRFosUUFFcUI7YUFFbkJDLFFBQVFGO01BQ1IscUJBRFFBO01BQ1I7WUFHVUMsZ0NBQUp6UjtRQUNDLFVBRERBLGlCdEI1aEJmLE9zQndoQlMwUixRQUlVRDtNQURaLFFBRXFCO2FBRXZCRSxNQUFNSDtNQUNLLG9CdEJoaUJoQixPc0J3aEJTRSxRQU9FRjtNQUNSLHlCdEJoaUJILE9zQmloQlNELFFBY0VDLGdCQUNnQjthQVFsQkkseUJBQXlCeFMsRUFBRTJPO010QnhpQnBDLElzQndpQm9DRTtNQUNqQztRQUFNLHFCQUQyQkE7UUFDM0I7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMcUJYLEVBSXZCVztVQUNFO1lBRUYsSUFEVUM7WUFDRDtvQkFEQ0E7bUN0QjlpQnJCLE9zQndpQlM0Uix5QkFBeUJ4UyxFQUlwQitPO1VBQ0QsSUFMdUJGLEtBSXRCRTs7UUFEUCxTQU1vQzthQUVsQzBELDBCQUEwQnpTLEVBQUUyTztNdEJuakJyQyxJc0JtakJxQ0U7TUFDbEM7UUFBTSxxQkFENEJBO1FBQzVCO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTHNCWCxFQUl4Qlc7VUFDRSx5QkFMd0JrTyxLQUl2QkU7VUFDRCxJQUdTMkQ7VUFDRjtrQkFERUE7O29CdEIzakJ0QixPc0JtakJTRCwwQkFBMEJ6UyxFQUlyQitPO1FBRFAsU0FNNEM7YUFFOUM0RCxjQUFjM1MsRUFBRTJPO01BRWxCLG9CdEJoa0JILE9zQm1qQlM4RCwwQkFXVXpTLEVBQUUyTztNQUNsQjs2QnRCL2pCSCxPc0J3aUJTNkQseUJBc0JVeFMsRUFBRTJPO21CQUVZO2FBRTVCaUUsVUFBVXhELEVBQUVUO01BQ2QsY0FBeUJoTyxHQUFTLHNCQUR0QnlPLEVBQ2F6TyxFQUFjO01BQTFCLG9CdEJua0JoQixPc0I4Q1NxTixZQW9oQlFXO01BQ2QseUJ0Qm5rQkgsT3NCOENTWCxPQW9oQk1vQixFQUFFVCxlQUM2QjthQVd6Q2tFLEtBQUtDO01BQ0QsNEJ0Qi9rQlQsT3NCdUNTaEYsV0FvREpjLE9BbWZLa0UsV0FDc0I7YUFFdkJDLFVBQVVEO01BQ0csZUFESEEsS0FDRztNQUNoQixZQURDRztRQUVLLFlBRkVELE9BR1Q7TUFHYSxVQU5YQyxxQnRCbGxCUCxPc0JpbEJTRixVQUNLQyxhQU1vQjtpQkFNZkUsV0FBV0o7TUFDckIscUJBRHFCQTtNQUNyQjtRQUVVLElBREpLLGVBQUp4RSxZQUNRLG1CQURSQTtRQUNRO1VBUVc7V0FQWkU7V0FBSGxPO1dBT2UsYUFYWHVTO1dBV1c7O1dBQ1csb0J0QjFtQnpDLFVzQmttQmtCckUsS0FPSW1FO1dBQ1Msb0J0QjFtQi9CLGdCc0JnbUJlRztVQVVFLHlCdEIxbUJqQixVc0JrbUJleFMsRUFPQXNTO1FBUkksSUFjVyxhQWpCWEMsWUFpQlc7UUFDTixVQURURyx1QnRCL21CZixXc0IrbUJzQkQsUUFmUEQ7TUFxQlIsaUJBdkJZRCxhQXVCVzthQWtCekJJLFlBQVl0VCxFQUFFMk8sR0FBR2M7TUFDbkIsY0FDVzlPO1FBQ1AsY0FBU0MsR0FDUCxrQkFKUVosRUFFSFcsRUFDRUMsRUFDRjtRQURQLHNCdEIxb0JQLE9zQm1DU2dOLFdBb21CYTZCLFNBS1g7TUFKVSxTQUpOcUQsVXRCcG9CZixPc0JtQ1NsRixXQW9tQlVlO01BRmhCLG9CdEJyb0JILFdzQndCS3RCLE1BNG1CVXlGOzRCdEJwb0JmLE9zQnFEUzdFLGtCQXlsQko7YUFFQXNGLFFBQVE1RSxHQUFHYztNQUNiLDRCQUFpQjlPLEVBQUVDLEdBQUssVUFBUEQsRUFBRUMsRUFBVyxFQURwQitOLEdBQUdjLEdBQ3dCO2FBRW5DK0QsYUFBYUM7TUFDZixTQUFRdlE7UUFDQSxxQkFGT3VRO1FBRVAsVUFJRixJQURHOVMsV0FDSCxVQURHQSxFQUpEdUM7UUFHRixRQUVXO01BTGpCLE9BQVFBLENBT1A7YUFFQ3dRLGFBQWEvRTtNQUNmLElBQUluTyxLQURXbU87TUFDZjtRQUVRLHFCQUZKbk87UUFFSSxjQUdLbU8sWUFBSGhPLFdBTE5ILE9BS1NtTyxhQUFIaE87UUFESixRQUdNO2FBSU5nVCxLQUFLN1g7TUFDWCxTQURXQSxVQUNGLFVBREVBLGlCdEJ6cUJkLE9zQnlxQlM2WCxpQkFDZ0I7Ozs7T0F0bEJwQmpGO09BT0FFO09BZ0JTRTtPQW5DTHhMO09BUEE2SztPQXFES2E7T0FXQUM7T0FHTEU7T0FPQUU7T0FPQUM7T0FPQUM7T0FrQkFDO09BWUFJO09BWUFDO09BV0FDO09BV0FDO09BVUFFO09BM01KNUM7T0FFQUM7T0FFQUM7T0E4TkE4QztPQTNLSTlCO09BaUxBK0I7T0FHQUM7T0FlSkU7T0F3QkFFO09BdlFJL0M7T0FtUktpRDtPQXhRTDdDO09BUEFGO09BZ1NKa0Q7T0FpQkFFO09Bc0JBQztPQVFJRztPQU9BQztPQU9BRTtPQWtEQUU7O09BU0FDO09Ba0pBbUI7T0FuakJBdEY7T0F1QkFRO09BS0FDOztPQStZQTREO09BV0FDO09BV0FDO09BdUNKRTtPQTBJQXFCO09BVEFEO09BeEdBZjs7T0ErQkFJO09BSUFDO09BaUZBWTtPQVVBRTtPQVlJQzs7UUN2cEJKQzthQUNBQyxLQUFLM1QsR0FBSSxVQUFKQSxFQUFVO2FBQ2Y0VCxNQUFNbEksRUFBR21JLFdBQVUsR0FBYm5JLEdBQW9DLElBQUwxTCxFQUEvQjBMLEtBQW9DLE9BQUwxTCxFQUFpQixPQUE3QzZULFNBQW9EO2FBQzdEQztNQUFNLFVBQW1CLElBQUw5VCxXQUFLLE9BQUxBO01BQWlCLHNDQUE0QjthQUNqRStULEtBQUtySSxFQUFFNUwsR0FBSSxHQUFONEwsR0FBNEMsSUFBTDFMLEVBQXZDMEwsS0FBNEMsa0JBQTFDNUwsRUFBcUNFLEdBQVosUUFBb0I7YUFDcERnVSxZQUFPLFVBQW1CLElBQUx0SSxXQUFLLE9BQUxBLEVBQWlCLFFBQUk7YUFDMUN1SSxNQUFJblUsRUFBRTRMLEdBQUksR0FBSkEsR0FBMEMsSUFBTDFMLEVBQXJDMEwsS0FBK0MscUJBQWpENUwsRUFBdUNFLElBQVosUUFBMkI7YUFDMURrVSxPQUFNUixLQUFNQztNdkJ6QmpCLFV1QnlCMkMsSUFBTDNULFdBQUssa0JBQTFCMlQsS0FBcUIzVCxHQUFzQixPQUFqRDBUO2FBQ05TLE9BQUtyVTtNdkIxQlYsVXVCMEJpQyxJQUFMRSxXQUFLLGtCQUF2QkYsRUFBa0JFLEdBQW1CO2FBQzFDb1UsZUFBVSxnQkFBdUM7YUFDakRDLGVBQVUsZ0JBQXVDO2FBRWpEQyxRQUFNeEUsR0FBR3lFLEdBQUdySTtNQUFLLEdBQVJxSTtXQUFHckksUUFDQXNJLEdBREF0SSxNQUNUdUksR0FETUYsd0JBQUh6RSxHQUNIMkUsR0FBU0Q7O09BQ0EsS0FGQXRJLEdBRUE7TUFDVCxRQUFLO2FBRVJ3SSxVQUFRMUUsSUFBSXVFLEdBQUdySTtNQUFLLEdBQVJxSTs7V0FBR3JJLElBQ0csSUFBTnNJLEdBREd0SSxNQUNHLGtCQURWOEQsU0FDSXdFO1FBR0U7TUFEQSxPQUhDdEksT0FJQTthQUVmeUksVUFBV2pCO012QnpDaEIsVXVCeUMrRCxJQUFMMVQsV0FBSyxVQUFMQSxHQUFsQixVQUF4QjBUO2FBQ1hrQixlQUFVLFVBQWdDLElBQUw1VSxXQUFLLFVBQUxBLEtBQVYsUUFBa0I7YUFDN0M2VTtNQUFTLFVBQXVDLElBQUw3VSxXQUFLLHNCdkIzQ3JELE9zQjBCS29OLFNDaUIyQ3BOO01BQWpCLE9EbkIxQm1OLEtDbUI0RDs7OztPQXpCNUR1RztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUtBSTtPQU1BQztPQUNBQztPQUNBQzs7YUN6QkFDLEdBQUc5VSxHQUFJLFVBQUpBLEVBQVE7YUFDWCtVLE1BQU1qTSxHQUFJLFVBQUpBLEVBQVc7YUFDakJrTSxRQUFNL1UsRUFBRzRUO01BQVUsU0FBYjVULE1BQWtDLElBQUxELEVBQTdCQyxLQUFrQyxPQUFMRCxFQUFvQixPQUE5QzZULFNBQXFEO2FBQzlEb0I7TUFBUyxtQkFBaUIsSUFBTGpWLFdBQUssT0FBTEE7TUFBb0IsdUNBQStCO2FBQ3hFa1Y7TUFBWSxrQkFBZ0M7TUFBWixJQUFMcE07TUFBSyxPQUFMQSxDQUE2QzthQUN4RXFNLE9BQUtsVixFQUFFSDtNQUFJLFNBQU5HLE1BQTJCLElBQUxELEVBQXRCQyxLQUEyQixrQkFBekJILEVBQW9CRSxHQUEyQixPQUFqREMsQ0FBa0Q7YUFDdkRtVixPQUE0QnRNLEdBQXJCLFNBQXFCQSxNQUFKLElBQUw3SSxFQUFTNkksS0FBSixPQUFMN0ksRUFBeUIsT0FBaEI2SSxDQUFpQjthQUM3Q3VNLE1BQUl2VixFQUFnQ2dKO014QnpCekMsU3dCeUJ5Q0EsTUFBWCxJQUFMOUksRUFBZ0I4SSxLQUFSLHFCQUF4QmhKLEVBQWdCRSxJQUFnQyxPQUFoQjhJO2FBQ3BDd00sVUFBVXhWLEVBQXNDRTtNeEIxQnJELFN3QjBCcURBLEtBQWEsT0FBYkEsRUFBZCxJQUFMOEksRUFBbUI5SSxLQUFSLHFCQUE5QkYsRUFBbUJnSjthQUM3QnlNLE9BQU1ULEdBQUlDO014QjNCZixtQndCMkJ3QyxJQUFML1UsV0FBSyxrQkFBN0I4VSxHQUF3QjlVO01BQXVCLElBQUw4STtNQUFLLGtCQUEzQ2lNLE1BQXNDak07YUFDaEQwTSxPQUFLMVY7TXhCNUJWLG1Cd0I0QitCLElBQUxFLFdBQUssa0JBQXJCRixFQUFnQkUsR0FBc0I7YUFDM0N5VixXQUFXM1Y7TXhCN0JoQixrQndCNkJzRCxTQUFkLElBQUxnSixXQUFLLGtCQUF4QmhKLEVBQW1CZ0o7YUFDOUI0TSxhQUFRLHlCQUF3QzthQUNoREMsZ0JBQVcseUJBQXdDO2FBRW5EQyxRQUFPZCxHQUFJQyxNQUFNYyxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDTixJQUFOdEIsR0FEWXNCLE1BQ04sa0JBRFBoQixRQUNDTjs7aUJBRFNxQjtpQkFBR0MsT0FFQSxJQUFOMU0sR0FGTTBNLE1BRUEsa0JBRlRmLFdBRUczTDtNQUNSLFFBQUs7YUFFWDJNLFVBQVNqQixHQUFJQyxNQUFNYyxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDUixJQUFOdEIsR0FEY3NCLE1BQ1Isa0JBRExoQixRQUNETjtRQUVPO2VBSElxQjtlQUFHQyxNQUlQO01BRkssSUFBTjFNLEdBRlEwTTtNQUVGLGtCQUZQZixXQUVDM0wsR0FFRTthQUVoQjRNO01BQVksbUJBQWlCLElBQUxoVyxXQUFLLFVBQUxBLEdBQXlCLFFBQUk7YUFDckRpVztNQUFVLG1CQUFpQixJQUFMalcsV0FBSyxVQUFMQSxLQUFzQixRQUFFO2FBQzlDa1c7TUFBUztRQUFpQixJQUFMbFcsV0FBSyxzQnhCOUMvQixPc0IwQktvTixTRW9CcUJwTjtNQUErQixPRnRCcERtTixLRXNCNkQ7Ozs7T0E1QjdEMkg7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FLQUc7T0FNQUM7T0FDQUM7T0FDQUM7O0lDekIrQixTQUEvQkMsbUJ6QnJCTDtJeUJxQm9DLElBQy9CQztJQUQrQixTQUcvQkMsZ0JBQVcsa0JBQWlDO0lBSGIsU0FZL0JDLG1CQUFZLG1DQUEwQztJQVp2QixtQkFZbkIsV0FBMEM7SUFadkI7OztzQnpCckJwQztPeUJxQktIO09BQ0FDOztPQUVBQztPQVNBQztJQVorQjthQ0EvQjdYLElBQUkyQjtNMUJyQlQsUTBCcUJTQSxpQkFDK0MsT0FEL0NBLEVBQ21CLGdDQUF3QzthQU8vRG1XLFFBT0F2VDtNMUJwQ0w7TTBCNkJlLFNBT1ZBO29CQUxRLDBCQUtSQTs7O29CQU5ROztvQkFNUkE7O2tCQURRO2tCQUZBO21CQURBO21CQUVBOztNbEI4ZUo7UWtCM2VNLElBQUo2TixJQUFJOzhCQUFKQSxNQURON047UUFDVSw0QkFBSjZOO01BS0osSUFBSXZRLEVBQUo7NEJBQUlBO01BQUosc0JBQUlBLFVBTk4wQztNQU1FLHNCQUFJMUMsV0FOTjBDO01BTUUsc0JBQUkxQyxVQU5OMEM7TUFNRSw0QkFBSTFDLEVBS2M7YUFFcEJrVyxVQUNBeFQ7TUFEWSxTQUNaQTtNQURZOzs7O01sQitkUixnQmtCOWRKQSxZQUlNO2FBRU55VCxVQUNBelQ7TUFEWSxTQUNaQTtNQURZOzs7O01sQndkUixnQmtCdmRKQSxZQUlNO2FBRU4wVCxnQkFDQTFULEdBRGtCLFlBQ2xCQSx5QkFDTTthQUVOMlQsZ0JBQ0EzVCxHQURrQixZQUNsQkEseUJBQ007YUFJTjRULFVBQVFDLEdBQUdDLElBQUssT0FBUkQsS0FBR0MsTUFBc0I7YUFDakNDLFFBQU9GLEdBQVFDLElBQVMsY0FBakJELEtBQVFDLFdBQTBCOzs7O09BckR6Q3JZO09BUUE4WDtPQW9CQUM7T0FPQUM7T0FPQUM7T0FJQUM7T0FNQUM7T0FDQUc7OztLekJqREFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBRUFDO0tBQ0FDO2FBRUFDLEtBQUtoSjtNQUNQLE9BRE9BO2VBTEw2STtlQUtLN0ksY0FFUyxZQWhCZHBVLGFBY0tvVSxTQUdGO2FBRUhpSixLQUFLako7TUFDUCxPQURPQSxZQVhMNEksU0FXSzVJLFFBRVMsWUF0QmRyVSxhQW9CS3FVLFNBR0Y7YUFFSGtKLFNBQVM1YjtNQUFJLGNBQUpBLE1BQUksVUFBSkE7Ozs7O01BSlgsV0FJeUU7YUFDdkU2YixPQUFPN2I7TUFBTyxnQkFBUEE7O2VVekJQMkU7aUJWQ2UsMEJBd0JSM0UsbUNBQXdEO2FBSS9EOGIsUUFBUXBKLEdBQUksT0FBSkEsV0FBVzthQUNuQnFKLFFBQVEzVSxHQUFJLE9BQUpBLENBQWU7YUFDdkI0VSxRQUFRdEo7TUFDVixhQURVQTtlVS9CUi9OO2lCVkUwQjs7OzZDQTZCbEIrTjtnQkFFTzthQUVmdUoscUJBSEYsV0FDaUI7YUFJZkMsbUJEeERMO1FDeURLQzthQUNBQyxXRDFETDthQ3lFY0Msb0JBQW9CQyxHQUFJLGNBQUpBLGlCQUF5QjthQUM3Q0Msa0JBQWtCRCxHQUFJLFFBQUpBLGlCQUFrQzthQUNwREUsaUJBQWlCRixHQUFJLE9BQUpBLFlBQW1DO2FBQ3BERyxXQUFXalksRUFBRWtPLEdBQUksWUFBTmxPLFdBQUVrTyxDQUE4QzthMEJvZHBFZ0ssWTFCbmQ0QmxZLEdBQUksT0FBSkEsZUFBK0I7YUFFM0RtWSxrQkFLRmpLO01BTHdCLFFBS3hCQTtRQUhPLFNBR1BBO1VBRk8sVUFFUEE7WUFETyxXQUNQQTtjQUFPLGFBQVBBLEVBQ0ssNkJBRG1CO1lBREY7VUFEQTtRQURBO01BRE4sNEJBS0M7YUFFZmtLLG1CQUdGbEs7TUFIeUIsUUFHekJBO1FBRE8sV0FDUEEsR0FBTyxhQUFQQSxFQUNLLDZCQURtQjtRQURGO01BRE4sNEJBR0M7dUJBSlEsV0FJUjs7OztPQWxFZjBJO09BQ0FDO09BSUFHO09BQ0FDO09BRUFDO09BS0FDO09BS0FDO09BQ0FDO3NCRDVDTDs7T0NnREtDO09BQ0FDO09BQ0FDO09BSUFDO09BRUFDO09BQ0FDO09BQ0FDO09BZVNDO09BRUFHO09BREFEO09BRUFFO08wQm9kVEM7TzFCamRBQztPQVFBQzs7YWE5REFDLFNBQU92Vzs7OztVQUZDLHVEQUFMd1c7O1FBREcsV0FHbUI7YUFFekJDLE9BQUt0VixFQUFFbkIsR0FBSSxVQUFObUIsRUFBRW5CLEVBQVE7YUFFZk07TUFBSyxVQUVHLElBQVJhLFdBQVEsT0FBUkEsRUFETSx1QkFDRzthQUVUZDtNQUFLLFVBRUcsSUFBTEwsV0FBSyxPQUFMQSxFQURHLHVCQUNHO2FBRVQwVyxJQUVjMVcsRUFBRTlCO01BRGxCLFFBQ2tCQTtZQUFGeVksTUFBRTNIO1FBQ2hCO2FBRGMySDtnQkFHVEMsSUFIU0QsT0FHWnhWLEVBSFl3VjtxQkFBRTNILElBR1EsT0FBdEI3TjtZQUE2QixRQUhmNk4sWUFBRjJILElBR1RDLElBSFc1SDs7VUFFUjtNQUhJLGdDQUtBO2FBRVo2SCxRQUVjN1csRUFBRTlCO01BRGxCLFFBQ2tCQTtZQUFGeVksTUFBRTNIO1FBQ2hCO2FBRGMySDtnQkFHVEMsSUFIU0QsT0FHWnhWLEVBSFl3VjtxQkFBRTNILElBR1EsVUFBdEI3TjtZQUFrQyxRQUhwQjZOLFlBQUYySCxJQUdUQyxJQUhXNUg7O1VBRVI7TUFISSxrQ0FLQTthQUlSOEgsV0FBV3hYLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNwQjtXQURpQkQ7MkJBR2Y1VixFQUhlNFYsUUFBR0csUUFHbEIvVixFQUhrQjZWLE1BQUhELFVBQUdDOztRQUVaLE9BRllBLEtBR2M7YUFFaENHLElBQUluWCxHQUFJLGtCQUFKQSxJQUFtQjthQU1uQm9YLFdBQVMxZCxFQUFFd0UsRUFBRU47TUFDbkIsR0FEaUJNLEtBQUZ4RSxFQUNBO01BRUwsSUFBSnFFLEVBQUksV0FIU0gsRUFBSmxFO01BSVIsVUFERHFFLEVBQ0MsV0FKUXJFLFVBQUV3RSxFQUFFTixHQUlNO29CQVNsQjZELElBQUk3RDtNQUNYLFFBRE82RDtRQUVQLFFBRk9BO2NBakJnQnVLLE1BQUl0UztVQUMzQjtlQWdCTytILE9BakJvQi9ILFNBRnpCeWQsSUFFcUJuTDtZQUVsQixRQUZzQnRTLFVBRUosb0JBZVprRSxFQWpCZ0JsRSxHQUFKc1MsZUFBSXRTOztRQW9CdEIsb0JBSEUrSCxJQUFJN0Q7TUFDSyxpQ0FFSzs7TUFFTCxjQUVYRyxXQUFIaUMsV0FBWSxjQUFaQSxFQUFZLFFBQVRqQztNQURHLFFBQ2U7bUJBSWJIO01kMUZiO1FjNEZxQixJQUFib0MsV0FBSG1CLFdBQWdCLGFBRlJ2RCxFQUVSdUQsR0FBNEIsVUFBaEJwRCxFQUFnQixNQUZwQkgsRUFFTG9DO01BREc7aUJBR0d0RyxFQUFFa0U7TWQ5RmhCO1FjZ0dxQixJQUFib0MsV0FBSG1CLFdBQWdCLGFBRkx2RCxFQUFGbEUsRUFFVHlIO1FBQThCLFVBQWxCcEQsRUFBa0IsSUFGckJyRSxVQUFFa0UsRUFFUm9DO01BREc7b0JBR0RwQyxFQUFFb0MsR0FBSSxhQUFOcEMsRUFBRW9DLEVBQWM7cUJBRWJwQyxFQUFFeVo7Ozs7VUFHUTtXQUFiclg7V0FBSG1CO1dBQWdCLHFCQUhWdkQsRUFHTnVEOzttQkFBR25COztRQURHLFlBR0M7b0JBR0FwQztNZDVHZDs7O2NjOEdRb0MsYUFBSG1CO1VBQVEsV0FGQ3ZELEVBRVR1RDtzQkFBR25COztRQURHO3FCQU9BcEMsRUFBRStZOzs7O2NBRkwzVyxXQUFIbUI7VUFBUSxXQUVGdkQsSUFGTnVEO1VBQVEsOEJBQUxuQjs7UUFERyxTQUdpQjt5QkFFVHBDLEVBQUVrRixLQUFLOUM7VUFBTGdELFlBQUsyVDtNQUN2QjtXQUR1QkE7VUFHRDtXQUFqQkMsSUFIa0JEO1dBR3JCeFYsRUFIcUJ3VjtXQUdELGtCQUhOL1ksRUFBRW9GLE9BR2hCN0I7V0FIZ0I2QjtXQUFLMlQsSUFHbEJDOztRQURHLE9BRlU1VCxPQUdnQjt3QkFFakJwRixFQUFFb0MsRUFBRThDO01BQ3JCLEdBRG1COUMsT0FHZDJXLElBSGMzVyxLQUdqQm1CLEVBSGlCbkIsS0FHTCxrQkFIR3BDLEVBR2Z1RCxFQUFZLFdBSEd2RCxFQUdaK1ksSUFIZ0I3VDtNQUViLE9BRmFBLElBR2M7b0JBRXhCbEYsRUFBRTBCLEdBQUdDO01BQ2hCLEdBRGFEO1dBQUdDO1VBR2MsSUFBZnlYLEtBSEN6WCxNQUdMK1gsR0FISy9YLE1BR1R3WCxLQUhNelgsTUFHVmlZLEdBSFVqWSxNQUdpQixhQUhuQjFCLEVBR1IyWixHQUFRRDtVQUFtQyxVQUFwQnZaLEVBQW9CLE9BSG5DSCxFQUdKbVosS0FBUUM7O09BREQsS0FGRXpYLEdBRUY7TUFFRixpQ0FBdUI7c0JBRXhCM0IsRUFDVTBCLEdBQUdDO1VBQVJ1RCxPQUFLaVUsUUFBR0M7TUFDdEI7V0FEbUJEO2FBQUdDO1lBR1M7YUFBaEJFLEtBSE9GO2FBR1hNLEdBSFdOO2FBR2ZDLEtBSFlGO2FBR2hCUSxHQUhnQlI7YUFHWSxxQkFKdEJuWixFQUlOMlosR0FBUUQsSUFIR3hVOzthQUFLaVUsS0FHWkU7YUFIZUQsS0FHUEU7OztTQURELEtBRlFGLEtBRVIsT0FGQWxVO1FBSUYsc0NBRUU7cUJBR0psRixFQUFFMEIsR0FBR0M7VUFBSHdYLFFBQUdDO01BQ2pCO1dBRGNEO2FBQUdDO2dCQUdGRSxLQUhFRixRQUdOTSxHQUhNTixRQUdWQyxLQUhPRixRQUdYUSxHQUhXUjtZQUdRLFdBSFZuWixFQUdUMlosR0FBUUQ7Z0JBSEdQLEtBR1BFLEtBSFVELEtBR0ZFOzs7U0FERCxLQUZHRixLQUVIO1FBRUYsbUNBQXdCOzBCQUVuQnBaLEVBQUVrRixLQUFLeEQsR0FBR0M7VUFBUnlELFlBQUsrVCxRQUFHQztNQUMzQjtXQUR3QkQ7YUFBR0M7WUFHUTthQUFwQkUsS0FIWUY7YUFHaEJNLEdBSGdCTjthQUdwQkMsS0FIaUJGO2FBR3JCUSxHQUhxQlI7YUFHVyxrQkFIbEJuWixFQUFFb0YsT0FHaEJ1VSxHQUFRRDthQUhRdFU7YUFBSytULEtBR2pCRTthQUhvQkQsS0FHWkU7OztTQURELEtBRmFGLEtBRWIsT0FGS2hVO1FBSVAsd0NBQTZCO3lCQUV2QnBGLEVBQUUwQixHQUFHQyxHQUFHdUQ7TUFDMUIsR0FEb0J4RDtXQUFHQztjQUdSeVgsS0FIUXpYLE1BR1orWCxHQUhZL1gsTUFHaEJ3WCxLQUhhelgsTUFHakJpWSxHQUhpQmpZO1VBR1Usa0JBSFoxQixFQUdmMlosR0FBUUQsR0FBbUIsWUFIWjFaLEVBR1htWixLQUFRQyxLQUhXbFU7O09BRVosS0FGU3ZELEdBRVQsT0FGWXVEO01BSWQsd0NBQThCO3VCQUU1QmtLO01kbEtqQjs7O1Vjb0thLElBQUxoTixhQUFIbUIsYUFBUSxnQkFGSTZMLEVBRVo3TDtVQUFRLHFCQUFMbkI7VUFERzs7c0JBR0tnTjtNZHRLaEI7OztVY3dLYSxJQUFMaE4sYUFBSG1CLGFBQVEsZ0JBRkc2TCxFQUVYN0w7VUFBUSxRQURGO1VBQ0UsWUFBTG5COztRQURHO3dCQUdPZ04sRUFBRTFOLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNwQjtXQURpQkQ7YUFBR0M7WUFHRTthQUFQRSxLQUhLRjthQUdUTSxHQUhTTjthQUdiQyxLQUhVRjthQUdkUSxHQUhjUjthQUdLLGdCQUhQL0osRUFHWnVLLEdBQVFEO1lBQVcsYUFITFAsS0FHVkUsS0FIYUQsS0FHTEU7OztTQURELEtBRk1GLEtBRU47UUFFRixzQ0FBMkI7dUJBRXpCaEssRUFBRTFOLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNuQjtXQURnQkQ7YUFBR0M7WUFHRzthQUFQRSxLQUhJRjthQUdSTSxHQUhRTjthQUdaQyxLQUhTRjthQUdiUSxHQUhhUjthQUdNLGdCQUhSL0osRUFHWHVLLEdBQVFEO1lBQVc7Z0JBSE5QLEtBR1RFLEtBSFlELEtBR0pFOzs7U0FERCxLQUZLRixLQUVMO1FBRUYscUNBQTBCO2lCQUU1QnpZO01kdExiOzs7VWN3TGEsSUFBTHlCLGFBQUhtQixhQUFRLHdCQUFSQSxFQUZRNUM7VUFFQSxRQURGO1VBQ0UsWUFBTHlCOztRQURHO2tCQUdHekI7TWQxTGQ7OztjYzRMUXlCLGFBQUhtQix3QkFGUzVDO2tCQUNIO3NCQUNIeUI7O1FBREc7bUJBR0l6QjtNZDlMZjs7O2NjZ01ZeUIsOEJBQUpOLFdBQUZ5QjtVQUFjLHNCQUFkQSxFQUZTNUMsR0FFMEIsT0FBakNtQjtzQkFBSU07O1FBREQ7dUJBR1F6QjtNZGxNbkI7OztjY29NWXlCLDhCQUFKTixXQUFGeUI7VUFBYyxzQkFBZEEsRUFGYTVDLEdBRXNCLFVBQWpDbUI7c0JBQUlNOztRQUREO2tCQUdHekI7TWR0TWQ7OztjY3dNWXlCLDhCQUFKTixXQUFGeUI7bUJBRlE1QyxFQUVrQixPQUF4Qm1CO3NCQUFJTTs7UUFERDtzQkFHT3pCO01kMU1sQjs7O2NjNE1ZeUIsOEJBQUpOLFdBQUZ5QjttQkFGWTVDLEVBRWMsVUFBeEJtQjtzQkFBSU07O1FBREQ7dUJBR1F6QjtNZDlNbkI7OztVY2dOb0I7V0FBTHlCOztXQUFUbUI7V0FBYyx3QkFBZEEsRUFGYTVDO1VBRUMsUUFEVDtVQUNTLFlBQUx5Qjs7UUFESjtzQkFHT3pCO01kbE5sQjs7O2Njb05leUIsOEJBQVRtQixzQkFGWTVDO2tCQUNQO3NCQUNJeUI7O1FBREo7MEJBR1d6QjtNZHROdEI7WWN3TnVCeUIsV0FBbEJ3WCxjQUFDclcsRUFBRHFXO1FBQ0ssMEJBREpyVyxFQUZnQjVDLEdBRUN5QixLQUFsQndYLEtBQ3lDLGFBSHhCalosRUFFQ3lCO01BRFo7eUJBSVV6QjtNZDNOckI7WWM2TnVCeUIsV0FBbEJ3WCxjQUFDclcsRUFBRHFXO2VBQUNyVyxNQUZlNUMsRUFFRXlCLEtBQWxCd1gsS0FBcUQsWUFGckNqWixFQUVFeUI7TUFEWjtvQkFHR2dOO01kL05kOzs7Y2NpT1VoTixhQUFMekI7VUFBYSxjQUZKeU8sRUFFVHpPLEdBQXNCLE9BQXRCQTtzQkFBS3lCOztRQURDO3NCQUdPZ047TWRuT2xCOzs7Y2NxT1VoTixhQUFMekI7VUFBYSxjQUZBeU8sRUFFYnpPLEdBQXNCLFVBQXRCQTtzQkFBS3lCOztRQURDO3dCQUdPcEM7TWR2T2xCOzs7VWMwT2tCLElBRFJvQyxhQUFMekIsYUFDYSxrQkFIQVgsRUFFYlc7VUFDYSxHQUNSK0wsT0FBb0IsT0FBcEJBO1VBRFEsWUFEUnRLOztRQURDO3NCQU9HZ047TUFDWDs7Ozs7Z0JBRU9oTixXQUFMekI7WUFBYSxjQUhKeU8sRUFHVHpPO2NBQXNCLGNBQXRCQSw4QkFBS3lCOzs7VUFEQyxvQkFFRDtxQkFJR2dOLEVBQUVxSzs7OztVQUdjO1dBQXJCclg7V0FBSHpCO1dBQXdCLGlCQUhoQnlPLElBR1J6Tzs7OzttQkFBR3lCOztRQURHLGdCQUdFOzBCQUVHcEM7TUFDYjs7Ozs7WUFHWSxJQURIb0MsV0FBTHpCLFdBQ1EsaUJBSkNYLEVBR1RXO1lBQ1E7Y0FFTSx5QkFBTFQsOEJBSEprQzs7WUFDRyxVQURIQTs7VUFEQyxvQkFNSjt3QkFHTXBDLEVBREd5Wjs7OztVQUlEO1dBRExyWDtXQUFMekI7V0FDVSxjQUhGWCxFQUVSVztXQUVPLGlCQURGZ087O21CQURBdk07O1FBREMsZ0JBSUc7MkJBRUdwQyxFQUFFa0YsS0FBS3VVO2lCQUFMdlUsc0JBQUt1VTs7O1VBSUg7V0FEWHJYO1dBQUx6QjtXQUNnQixpQkFKSlgsU0FHWlc7V0FDZ0I7O3VCQUFKa1o7a0JBQU4zSzs7bUJBREQ5TTs7UUFETyw4QkFJSDt5QkFFRGdOLEVBQUVxSzs7OztjQUdQclgsYUFBTHpCO1VBQWEsY0FISHlPLEVBR1Z6TztZQUFzQixhQUF0QkEseUJBQUt5QjtVQUEyQyxZQUFoRHpCLHNCQUFLeUI7O1FBRFc7UUFBVCx5QkFFRzs2QkFFSWdOLEVBQUVxSzs7OztVQUlILElBRFJyWCxhQUFMekIsYUFDYSxpQkFKQ3lPLEVBR2R6TztVQUNhO1lBQ1MseUJBQUxULDRCQUZaa0M7VUFDUSxJQUVVLHdCQUFMK0csaUNBSGIvRzs7UUFEWTtRQUFWLDBCQU9HOztNQUVFO1FBR0s7U0FEVkE7O1NBQUp4QjtTQUFGRDtTQUNnQixjQURWeUI7U0FDVTs7cUJBRGhCekIsRUFDTW9aLE9BREpuWixFQUNRa1o7TUFGTCxVQUVvQztxQkFFOUJwWSxHQUFHQztNQUNqQixHQURjRDtXQUFHQztjQUdGeVgsS0FIRXpYLE1BR04rWCxHQUhNL1gsTUFHVndYLEtBSE96WCxNQUdYaVksR0FIV2pZO1VBR29CLGFBQS9CaVksR0FBUUQsSUFBdUIsUUFBM0JQLEtBQVFDOztPQURELEtBRkd6WCxHQUVIO01BRUYsb0NBQTBCO21CQUkxQnVPLElBR1Z4TyxHQURJQztNQUROLEdBRUVEO1dBRElDO2NBRVlxWSxHQUZaclksTUFFTXNZLEdBRk50WSxNQUVFdVksR0FETnhZLE1BQ0F5WSxHQURBelk7VUFFSyxzQkFMS3dPLElBSVZpSyxHQUFVRjt5QkFHRyxNQVBIL0osSUFHVnhPLEdBQ2dCc1k7c0JBQWhCRyxHQUVhLE1BTkhqSyxJQUlKZ0ssR0FGRnZZO1FBQ00sT0FBVkQ7TUFEVSxPQUFOQyxFQUt3Qjt1QkFHaEJ1TyxJQUFJOU47TUFDbEIsU0F3Q0lnWSxTQUFTOVosRUFBRThCO1FBQ2IsU0FEVzlCO2FBQUU4Qjs7O2NBR0U7ZUFERUs7ZUFBTjRYO2VBQU5DLEdBRlFsWTtlQUdFLGlCQTVDSDhOLElBMkNQb0ssR0FBTUQsT0FBTkMsTUFBTUQsZ0JBQU5DO2NBQzJDLFVBQXhDOVosRUFEU2lDOztrQkFGTm5DLEtBQUU4Qjs7Ozs7ZUFPSjtnQkFGY21ZO2dCQUFOQztnQkFBTkM7Z0JBQU5DLEtBTFF0WTtnQkFPSjtnQ0FoREc4TixJQThDUHdLLEtBQU1EO3VCQUdBLFdBakRDdkssSUE4Q0R1SyxLQUFNRDt3QkFBWkUsUUFBTUQsUUFBTUQ7eUJBSUQsV0FsREp0SyxJQThDUHdLLEtBQVlGOzBCQUFaRSxRQUFZRixNQUFOQzswQkFBTUQsTUFBWkUsUUFBTUQ7dUJBTUcsV0FwREZ2SyxJQThDUHdLLEtBQVlGO3dCQUFOQyxRQUFOQyxRQUFZRjt5QkFPSCxXQXJERnRLLElBOENEdUssS0FBTUQ7MEJBQU5DLFFBQU1ELE1BQVpFOzBCQUFZRixNQUFOQyxRQUFOQztlQVFNLFVBUEgzSixJQURld0o7UUFZbkI7WUFqQk9qYTtTQWlCUCxHQWpCT0EsSUFpQkhxYTtTQUVTLFdBRlRBLEdBakJLdlk7U0FtQkk7O1NBQ0EsYUFGVHdZLEdBQ0l4QjtTQUNLOztTQTVERDFYLEdBMkRSRjtTQTNEV0csR0E0RFhGO1NBNURjeUQ7UUFDdEI7YUFEZ0J4RDtlQUFHQztrQkFJTHFZLEdBSktyWSxNQUlUc1ksR0FKU3RZLE1BSWJ1WSxHQUpVeFksTUFJZHlZLEdBSmN6WTtjQUtULGtCQU5Ld08sSUFLVmlLLEdBQVFGO2dCQUdELGNBSENBLEdBSlkvVSxNQUFIdkQsR0FJTHFZLEdBSlE5VTtjQU1iLGNBRlBpVixHQUpvQmpWLE1BQU54RCxHQUlWd1ksR0FKZ0JoVjs7cUJBR1YsV0FISXhELEdBQU13RDs7b0JBRVYsV0FGT3ZELEdBQUd1RDt5QkE0RFY0VixNQUNnQjtNQTdEOUIsU0FrQlFELEtBQUt2YSxFQUFFOEI7UUFDYixTQURXOUI7YUFBRThCOzs7Y0FHRTtlQURFSztlQUFONFg7ZUFBTkMsR0FGUWxZO2VBR0UsaUJBdEJIOE4sSUFxQlBvSyxHQUFNRCxhQUFOQyxnQkFBTUQ7Y0FDc0MsVUFBekM3WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQU9KO2dCQUZjbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FMUXRZO2dCQU9KO2dDQTFCRzhOLElBd0JQd0ssS0FBTUQ7dUJBTUcsV0E5QkZ2SyxJQXdCUHdLLEtBQVlGO3lCQU9ILFdBL0JGdEssSUF3QkR1SyxLQUFNRDtnQ0FBTkMsUUFBTkM7MEJBQU1ELFFBQU1ELE1BQVpFO3dCQUFNRCxRQUFOQyxRQUFZRjt1QkFHTixXQTNCQ3RLLElBd0JEdUssS0FBTUQ7eUJBSUQsV0E1Qkp0SyxJQXdCUHdLLEtBQVlGO2dDQUFaRSxRQUFNRDswQkFBTkMsUUFBWUYsTUFBTkM7d0JBQU5DLFFBQU1ELFFBQU1EO2VBUU4sVUFQSHpKLElBRGV3SjtRQVluQjtZQWpCT2phO1NBaUJQLEdBakJPQSxJQWlCSHFhO1NBRVMsZUFGVEEsR0FqQkt2WTtTQW1CSTs7U0FDQSxpQkFGVHdZLEdBQ0l4QjtTQUNLOztTQTdCRzFYLEdBNEJaRjtTQTVCZUcsR0E2QmZGO1NBN0JrQnlEO1FBQzFCO2FBRG9CeEQ7ZUFBR0M7a0JBSVRxWSxHQUpTclksTUFJYnNZLEdBSmF0WSxNQUlqQnVZLEdBSmN4WSxNQUlsQnlZLEdBSmtCelk7Y0FLYixrQkFmS3dPLElBY1ZpSyxHQUFRRjtnQkFFRCxjQUZQRSxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKb0JoVjtjQU9qQixjQUhDK1UsR0FKZ0IvVSxNQUFIdkQsR0FJVHFZLEdBSlk5VTs7cUJBR2QsV0FIUXhELEdBQU13RDs7b0JBRWQsV0FGV3ZELEdBQUd1RDt5QkE2QmQ0VixNQUNvQjtNQXdCeEIsSUFBTmpYLElBQU0sU0FoRVF6QjtNQWdFUixZQUFOeUIsSUFDdUIsS0FEdkJBLElBaEVjekIsT0FpRXFCO3VCQXlDM0I4TixJQUFJOU47TUFDaEIsU0E4RElnWSxTQUFTOVosRUFBRThCO1FBQ2IsU0FEVzlCO2FBQUU4Qjs7O2NBSUM7ZUFGR0s7ZUFBTjRYO2VBQU5DLEdBRlFsWTtlQUlDLGVBbkVKOE4sSUFpRUxvSyxHQUFNRDtlQUVHLFFBQUpVLE9BRkxULFVBRUtTLE9BRkxULE1BQU1ELGdCQUFOQztjQUdxRCxVQUZsRDlaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBVUM7Z0JBRlNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQVJRdFk7Z0JBVUMsZUF6RUo4TixJQXVFTHdLLEtBQU1EO2VBRUcsU0FBSk87Z0JBRU07Z0NBM0VOOUssSUF1RUN1SyxLQUFNRDtpQkFJRDt3QkFBSlM7dUJBSkRSO3dCQUlDUSxPQUpEUixRQUFNRCxnQkFBTkM7aUJBQ0gxSjs7Z0JBS0csT0FKRGlLO2tCQUtNLElBQUpFLElBQUksV0E5RU5oTCxJQXVFQ3VLLEtBQU1EO2tCQU9ELFNBQUpVOytCQVBQUixRQUFNRDs7bUJBU0UsT0FGRFM7Z0NBUFBSLFFBQU1ELFFBQU1EOztvQkFXQztvQ0FsRlJ0SyxJQXVFTHdLLEtBQVlGO3FCQVdDOzRCQUFKVzsyQkFYVFQsUUFBTUQ7NEJBV0dVOzZCQVhUVCxRQUFZRixNQUFOQzs2QkFBTUQsTUFBWkUsUUFBTUQ7O2tCQU9LLElBTlIxSjs7a0JBZVEsSUFBSnFLLElBQUksV0F2Rk5sTCxJQXVFTHdLLEtBQVlGO2tCQWdCRCxTQUFKWTsrQkFoQkRYLFFBQU5DOzttQkFrQlEsT0FGRFU7Z0NBaEJEWCxRQUFOQyxRQUFZRjs7b0JBb0JDO29DQTNGUnRLLElBdUVDdUssS0FBTUQ7cUJBb0JDOzRCQUFKYTsyQkFwQkhaLFFBQU5DOzRCQW9CU1c7NkJBcEJIWixRQUFNRCxNQUFaRTs2QkFBWUYsTUFBTkMsUUFBTkM7O2tCQWdCVyxJQWZSM0o7ZUF3QkosVUF4QklBLElBRGV3SjtRQTJCbkI7WUFuQ09qYTtTQW1DUCxHQW5DT0EsSUFtQ0hxYTtTQUVTLFdBRlRBLEdBbkNLdlk7U0FxQ0k7O1NBQ0EsYUFGVHdZLEdBQ0l4QjtTQUNLOztTQXBHRDFYLEdBbUdSRjtTQW5HV0csR0FvR1hGO1NBcEdjeUQ7UUFDdEI7YUFEZ0J4RDtlQUFHQztjQUtQLElBREVxWSxHQUpLclksTUFJVHNZLEdBSlN0WSxNQUlidVksR0FKVXhZLE1BSWR5WSxHQUpjelksTUFLSixhQU5Gd08sSUFLUmlLLEdBQVFGO2NBQ0UsU0FBSi9XO2dCQUNVLGNBRmhCaVgsR0FKb0JqVixNQUFOeEQsR0FJVndZLEdBSmF2WSxHQUlMcVksR0FKUTlVO2NBT2IsUUFGRGhDLEdBSUMsY0FMQytXLEdBSlkvVSxNQUFIdkQsR0FJTHFZLEdBSlE5VTtjQUtWLElBR0gsVUFKUGlWLEdBSm9CalYsTUFBTnhELEdBSVZ3WSxHQUpnQmhWOztxQkFHVixXQUhJeEQsR0FBTXdEOztvQkFFVixXQUZPdkQsR0FBR3VEO3lCQW9HVjRWLE1BQ2dCO01Bckc5QixTQXNCUUQsS0FBS3ZhLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUlDO2VBRkdLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFJQyxlQTNCSjhOLElBeUJMb0ssR0FBTUQ7ZUFFRyxRQUFKVSxPQUZMVCxXQUVLUyxPQUZDVixNQUFOQyxnQkFBTUQ7Y0FHK0MsVUFGbEQ3WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQVVDO2dCQUZTbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FSUXRZO2dCQVVDLGVBakNKOE4sSUErQkx3SyxLQUFNRDtlQUVHLFNBQUpPO2dCQUVNO2dDQW5DTjlLLElBK0JDdUssS0FBTUQ7aUJBSUQ7d0JBQUpTO3VCQUpEUjt5QkFJQ1EsT0FKS1QsTUFBTkMsb0JBQU1EO2lCQUNUeko7O2dCQUtHLFFBSkRpSztrQkFjTSxJQUFKRSxJQUFJLFdBL0NOaEwsSUErQkx3SyxLQUFZRjtrQkFnQkQsU0FBSlU7K0JBaEJEVCxRQUFOQzs7bUJBa0JRLFFBRkRRO29CQUlNO29DQW5EUmhMLElBK0JDdUssS0FBTUQ7cUJBb0JDOzRCQUFKVzsyQkFwQkhWLFFBQU5DOzZCQW9CU1M7NkJBcEJHWCxNQUFOQyxRQUFOQzs2QkFBTUQsUUFBTUQsTUFBWkU7OztnQ0FBTUQsUUFBTkMsUUFBWUY7a0JBZ0JELElBZlJ6Sjs7a0JBTVEsSUFBSnFLLElBQUksV0F0Q05sTCxJQStCQ3VLLEtBQU1EO2tCQU9ELFNBQUpZOytCQVBQVixRQUFNRDs7bUJBU0UsUUFGRFc7b0JBSU07b0NBMUNSbEwsSUErQkx3SyxLQUFZRjtxQkFXQzs0QkFBSmE7MkJBWFRYLFFBQU1EOzZCQVdHWTs2QkFYR2IsTUFBWkUsUUFBTUQ7NkJBQU5DLFFBQVlGLE1BQU5DOzs7Z0NBQU5DLFFBQU1ELFFBQU1EO2tCQU9ELElBTlJ6SjtlQXdCSixVQXhCSUEsSUFEZXdKO1FBMkJuQjtZQW5DT2phO1NBbUNQLEdBbkNPQSxJQW1DSHFhO1NBRVMsZUFGVEEsR0FuQ0t2WTtTQXFDSTs7U0FDQSxpQkFGVHdZLEdBQ0l4QjtTQUNLOztTQWpERzFYLEdBZ0RaRjtTQWhEZUcsR0FpRGZGO1NBakRrQnlEO1FBQzFCO2FBRG9CeEQ7ZUFBR0M7Y0FLWCxJQURFcVksR0FKU3JZLE1BSWJzWSxHQUphdFksTUFJakJ1WSxHQUpjeFksTUFJbEJ5WSxHQUprQnpZLE1BS1IsYUFqQkZ3TyxJQWdCUmlLLEdBQVFGO2NBQ0UsU0FBSi9XO2dCQUNVLGNBRmhCaVgsR0FKd0JqVixNQUFOeEQsR0FJZHdZLEdBSmlCdlksR0FJVHFZLEdBSlk5VTtjQU9qQixPQUZEaEMsR0FHQyxjQUpQaVgsR0FKd0JqVixNQUFOeEQsR0FJZHdZLEdBSm9CaFY7Y0FLZCxJQUlILFVBTEMrVSxHQUpnQi9VLE1BQUh2RCxHQUlUcVksR0FKWTlVOztxQkFHZCxXQUhReEQsR0FBTXdEOztvQkFFZCxXQUZXdkQsR0FBR3VEO3lCQWlEZDRWLE1BQ29CO01BMEN4QixJQUFOalgsSUFBTSxTQXhHTXpCO01Bd0dOLFlBQU55QixJQUN1QixLQUR2QkEsSUF4R1l6QixPQXlHdUI7NkJBR2pCVixHQUFHQztVQUFId1gsUUFBR0M7TUFDekI7V0FEc0JEO2FBQUdDLHVCQUFIQyx1QkFBR0Q7VUFJZDtRQURBLE9BSGNBLFVBS2tCO2lDQUdqQmhYLEVBQUU5QjtVQUFGeVksTUFBRTNIO01BQzVCO1dBRDBCMkg7VUFNeEIsSUFES0MsSUFMbUJEO1VBTXhCLE9BTjBCM0gsS0FPeEIsUUFQd0JBLFlBQUYySCxJQUtuQkMsSUFMcUI1SDtVQU1YO1FBSGYsYUFIMEJBLG1CQU9HO3FCQVVuQnBCLEdBQUd0TyxHQUFHQztVQUFId1gsUUFBR0M7TUFDbEI7V0FEZUQ7YUFBR0M7WUFJRTthQUFORSxLQUpJRjthQUlSTSxHQUpRTjthQUlaQyxLQUpTRjthQUliUSxHQUphUjthQUlLLGdCQUpSbkosR0FJVjJKLEdBQVFEO1lBQVUsYUFKTFAsS0FJVEUsS0FKWUQsS0FJSkU7OztTQUZGLEtBRk1GLEtBRU47UUFDYSxTQUNxQjt1QkFFaENsSixJQUFJeE8sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3JCO1dBRGtCRDs7YUFBR0M7WUFNWCxJQURJRSxLQUxPRixRQUtYTSxHQUxXTixRQU1YLGFBTklsSixTQUtKd0o7WUFDQSxTQUFKeFcsT0FOWWlXLFVBQUdDLEtBS1BFO1lBRUcsT0FEWHBXO1VBRlE7UUFEQSxPQUhPa1csVUFRRztzQkFJZmhYO01BQ1QsU0FBUW1aLElBQUluWjtRQUFPLEdBQVBBO2NBRUhvWixLQUZHcFosS0FFUnpCLEVBRlF5QjtVQUVrQixVQUExQnpCLGlCZHBrQlAsT2Nra0JXNGEsSUFFQ0M7UUFEQyxRQUM2QjtNQUZ2QyxzQmRsa0JILE9ja2tCV0QsSUFEQ25aLFFBS0o7b0JBRUl5TDtNQUNULFNBQVE0TixPQUFPQyxNQUFNN047UUFDbkIsU0FEYTZOO1VBR1g7d0NBQW1CdE4sSUFBSXpOLEdBQUssVUFBTEEsRUFBSnlOLElBQWUsT0FIakJQO1FBS1IscUJBTFFBO1FBS1I7Y0FFTUwsY0FBSDdNO1VBQWlCLFVBQWpCQSxFQUFpQixPQVBsQithLGNBT0lsTztRQURGLFFBQ3FDO01BUHRELGtCQURTSyxJQVVLOzs7O09BempCWjhLOzs7T0FFQUU7T0FFQW5XO09BSUFEO09BSUFxVztPQVFBRztPQWVBTTs7T0FQQS9XO09BRUkwVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRY3JDSnlDLE9BQ0FDLE1BQ0FDO2FBU0FDLE1BQUluYixHQUFJLFlBQUpBLFdBQTRCO1FBQ2hDb2IscUJBQ0FDO2FBSUFDLE9BQU90YixHQUFJLE9BQUpBLE1BQWlCO2FBSXhCdWIsbUI1QnZDTDtRNEJ3Q0tDO2FBQ0FDLE1BQUl6YixFQUFFQyxHQUFRLE9BQVZELEtBQUVDLEVBQUZELEVBQUVDLENBQStCO2FBQ3JDeWIsTUFBSTFiLEVBQUVDLEdBQVEsT0FBUkEsS0FBRkQsSUFBRUMsQ0FBK0I7YUFVckMwYixZQUFVM2IsR0FBSSxtQ0FBSkEsRUFBcUI7Ozs7T0FsQy9CZ2I7T0FDQUM7T0FDQUM7T0FTQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FVQUM7O29CRFhLaGMsRUFBRTRDO01BQ0QsSUFBSjFDLEVBQUksa0JBRERGLEdBRVAsZ0JBRElFLElBREdGLEVBQUU0QyxHQUVULE9BREkxQyxDQUVIO29CQUVNRixFQUFFTjtNQUNELHdCQURETSxHQUNDLEtBRERBLFVBQ0M7O1lBQ1J4RTtRQUNFO1VBQWUsc0JBRmIwRSxFQUNKMUUsRUFDaUIsV0FIUmtFLEVBRVRsRTtVQUNpQixTQURqQkE7OztNQUdBLE9BSkkwRSxDQUlIO0lBRVM7a0JBRUhBO01BQ1AsNkJBRE9BLEdBRVAsb0JBRElxRDtNQUVKLGdCQUhPckQsSUFFSEwsSUFEQTBEO01BRUosT0FESTFELENBRUg7SUFOUyxrQkFRRTJCLEdBQXFCLGlDQUFyQkEsR0FBNkI7SUFSL0Isa0JBU0V0QixHQUFJLGlDQUFKQSxHQUE2QjtJQVQvQixhQVdKQSxFQUFFb0QsSUFBSUM7TTNCaEVmO2EyQmdFV0QsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7UUFJRSxJQUFKekQsRUFBSSxrQkFKRTBELEtBS1YsZ0JBTElyRCxFQUFFb0QsSUFJRnpELElBSk0wRCxLQUtWLE9BREkxRDtNQUZELDRDQUtGO0lBbEJPLG9CQW9CRzJCLEVBQUU4QixJQUFJQztNQUF1QixnQ0FBN0IvQixFQUFFOEIsSUFBSUMsS0FBc0M7SUFwQi9DLFNBdUJSMFksU0FBS2haLEVBQUV6QjtNQUNULE1BRE95QixJQUFFekIsTUFDVCxLQURTQSxVQUNULE1BQUlvQjtNQUFKLEdBRE9LOzs7T0FLQTtNbkIrYkQsZ0JtQmhjbUIsOEJBSHJCTCxDQUlJO0lBNUJFLGdCQThCRDFDLEVBQUVpSSxLQUFLQztNQUNOOzZCQUFWLHFCQURTbEksR0FBRWlJLE1BQUtDO09BRWhCLG9CQURJN0U7TUFDSixRQUZXNEU7V0FHRStULE9BSEYvVCxLQUdOZ1U7O1dBQVFELFNBQVJDLFNBSE1oVTtNQUNELElBR05pVSxPQUFTLE1BQWIscUJBSlNsYyxLQUdKaWMsV0FGRDVZLE1BRVMyWTtNQUNBLE9BQVRFLE9BQ2UsZ0JBTFZsYyxFQUdKaWMsT0FERHRjLEVBQ1NxYyxPQUNURTtNQUNtRCxPQUhuRHZjLENBSUg7SUFwQ1MsY0FzQ0hLLEVBQUVvRCxJQUFJQyxJQUFJWDtNM0IzRnBCO2EyQjJGWVUsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHSix1QkFIRXBELEVBQUVvRCxJQUFJQyxJQUFJWDtNQUVaLDhDQUN1QjtJQXpDbEIsY0EyQ0gxQixHQUFHbWIsS0FBS2xiLEdBQUdtYixLQUFLL1k7TTNCaEcxQjs7O1EyQmdHMEJBOzs7O1FBQWI4WTs7OytCQUFIbmIsTUFBZ0JxQyxXQUFiOFk7Ozs7UUFBUUM7OzsrQkFBSG5iLE1BQVFvQyxXQUFMK1k7T0FJYix1QkFKRXBiLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNQUdsQixrQ0FDK0I7SUEvQzFCLGdCQWlESXJDLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNM0J0R2pDOzs7UTJCc0dpQ0E7Ozs7UUFBYjhZOzs7Z0NBQUhuYixNQUFnQnFDLFdBQWI4WTs7OztRQUFRQzs7OytCQUFIbmIsTUFBUW9DLFdBQUwrWTtPQUlwQix3QkFKU3BiLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNQUd6QixrREFDc0M7SUFyRGpDLGdCQXdESDdELEVBQUV1RDtNQUNULDhCQURTQSxXQUNUOzs7UUFBNkI7cUJBRHRCdkQsRUFDc0Isc0JBRHBCdUQsRUFDVHpIO1VBQTZCLFNBQTdCQTs7O2NBQW1EO0lBekR6QyxpQkE0REZrRSxFQUFFdUQ7TUFDViw4QkFEVUEsV0FDVjs7O1FBQTZCO3FCQURyQnZELEVBQ1JsRSxFQUE2QixzQkFEbkJ5SCxFQUNWekg7VUFBNkIsU0FBN0JBOzs7Y0FBc0Q7SUE3RDVDLGtCQStFRCtnQixJQUVQemE7TTNCdElMLEcyQnNJS0E7UUFBSyxnQ0FGRXlhLGlCQUVQemEsRUFBSzs7Ozs7Y0FsQmlCO2VBS2hCSztlQUxLOUIsZ0NBT2tCbWM7ZUFQUCxhQUFYbmMsSUFBaUM7O3FCQUt0QzhCOztxQkFETTs7O1VBZ0I0QixrREFGeENMOzs7OztvQkFQTTBZO2dCQUNOLHVCQUxpQmlDO2dCQU1qQjtrQkFHT0YsTUFUVUUsVUFLakIsK0JBTDZCRDtnQkFNN0I7Z0VBTjZCQTs7eUJBSXZCaEM7O2NBRE4sdUJBSGlCaUMsUUFHakI7cUJBSGlCQTtZQUNYLE9BRFdBO01BVVg7SUFoRkUsZUFzRkp2YixHQUFHQztNQUNUOytCQURNRDtPQUNOLHdCQURTQztPQUdELG9CQUZKQyxLQUNBQztNQUVKLGdCQUpNSCxLQUdGckIsSUFGQXVCO01BSUosZ0JBTFNELEtBR0x0QixFQUZBdUIsR0FDQUM7TUFHSixPQUZJeEIsQ0FHSDtJQTVGUyxTQWtHUjZjO01BQVc7Ozs7O01uQnlYUCxtQm1CdlhNO0lBcEdGLGNBc0dIeGM7TUFDUCw2QkFET0EsR0FDUDs7UUFFa0IsR0FEZDFFLE9BREErSCxPQUVjLCtCQUhYckQsRUFFSDFFO1VBRUY7UUFFRixJQUFJc1UsS0FMQXZNOztVQU1jLEdBTGQvSCxRQUlBc1UsUUFDYywrQkFQWDVQLEVBTUg0UDtZQUVGO1VBRUYsT0FSSXRVLFFBSUFzVSxLQUtGLElBWEs1UCxFQUVIMUUsTUFJQXNVLE9BSkF0VSw0QkFXRztJQW5IRyxtQkFxSEEwRTtNQUNWLHNDQURVQSxXQUNWOztZQUNBNkI7UUFDRTswQ0FIUTdCLEVBRVY2QjtVQUNFOzs7Ozs7Ozs7Ozs7VW5CbVdJO1VtQnJXRi9CO1VBRUYsU0FERitCOzs7TUFPQSxHQVJJL0IsU0FRSixxQkFUVUUsR0FTWSxZQVRaQTtNQUNWLElBU011USxJQUFLLGtCQVRQelE7TUFTTztNQVRYLElBU1csMEJBVkRFLFdBVUM7O1lBRVQxRTtRQUNFO3NDQWJNMEUsRUFZUjFFO1VBQ0UsU0FXRW9IOzs7Ozs7Ozs7Ozs7OztnQkFERSxzQkFiRjZOLElBVEZ6UTtnQkFzQkk7c0NBYkZ5USxJQVRGelE7OztnQkFrQkksc0JBVEZ5USxJQVRGelE7Z0JBa0JJO3NDQVRGeVEsSUFURnpROzs7Z0JBZ0JJLHNCQVBGeVEsSUFURnpRO2dCQWdCSTtzQ0FQRnlRLElBVEZ6UTs7O2dCQW9CSSxzQkFYRnlRLElBVEZ6UTtnQkFvQkk7c0NBWEZ5USxJQVRGelE7Ozs7O2FBeUJJLHNCQWhCRnlRLElBVEZ6UTthQXlCSTttQ0FoQkZ5USxJQVRGelEsV0F1QkU0QzthQUVFO21DQWhCRjZOLElBVEZ6USxZQXVCRTRDO2FBRUU7bUNBaEJGNk4sSUFURnpRLFdBdUJFNEM7OzthQVRFLHNCQUxGNk4sSUFURnpRO2FBY0k7bUNBTEZ5USxJQVRGelEsS0F1QkU0Qzs7bUJBQXFCLHNCQWRyQjZOLElBVEZ6USxLQXVCRTRDOztVQVdGO1VBdEJBLFNBREZwSDs7O01BeUJBLE9BM0JJaVYsR0E0Qkg7SUEzSk8sZUE2SkovUSxFQUFFUTtNQUNSLElBQUk0QixFQUFKLHFCQURRNUI7TUFDUixTQUFJNEIsRUFDVSxPQUZONUI7TUFDUixJQUVVLG9CQUZONEIsR0FFTSxLQUZOQSxVQUVNOztZQUNSdEc7UUFBc0I7VUFBZSxzQkFEakNxRSxFQUNKckUsRUFBcUMsV0FKakNrRSxFQUlrQixzQkFKaEJRLEVBSU4xRTtVQUFxQyxTQUFyQ0E7OztNQUNBLE9BRklxRSxDQUdIO0lBbktPLGdCQXFLSEgsRUFBRVE7TUFDVCxJQUFJNEIsRUFBSixxQkFEUzVCO01BQ1QsU0FBSTRCLEVBQ1UsT0FGTDVCO01BQ1QsSUFFVSxvQkFGTjRCLEdBRU0sS0FGTkEsVUFFTTs7WUFDUnRHO1FBQXNCO1VBQWU7WUFEakNxRSxFQUNKckUsRUFBcUMsV0FKaENrRSxFQUlMbEUsRUFBc0Isc0JBSmYwRSxFQUlQMUU7VUFBcUMsU0FBckNBOzs7TUFDQSxPQUZJcUUsQ0FHSDtJQTNLTyxxQkE2S0VILEVBQUVXLEVBQUU0QztNQUNoQixTQURjNUMsR0FDZCwwQkFEZ0I0QyxXQUNoQjs7WUFDQXpIO1FBQ0U7VUFBSyxrQkFIS2tFLEVBQ1JHLEtBRUYsc0JBSGNvRCxFQUVoQnpIO1VBQ08sU0FEUEE7OztNQUdBLE9BSklxRSxJQUlGO0lBbExRLHNCQW9MR0gsRUFBRXVELEVBQUU1QztNQUNqQixTQURpQkEsR0FDakIsMEJBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUdYLHNCQUhhdUQsRUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7SUF6TFEsa0JBMkxEaVAsRUFBRTVPO01BQ1gsMkJBRFdBLEdBRUUxRTtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKRDhPLEVBSUYsc0JBSkk1TyxFQUVFMUUsSUFFcUI7UUFDM0IsUUFITUE7aUJBSVA7SUFqTUksbUJBbU1Bc1QsRUFBRTVPO01BQ1osMkJBRFlBLEdBRUMxRTtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKQThPLEVBSUgsc0JBSks1TyxFQUVDMUU7VUFFcUIsUUFGckJBO1FBR04sU0FDRDtJQXpNSSwyQkEyTVEwRSxHQUFJLGFEN0xwQnFXLGdCQzZMZ0JyVyxFQUE4QjtJQTNNdEMsMkJBNE1RQSxHQUFJLGFEbE1wQm9XLGdCQ2tNZ0JwVyxFQUE4QjtJQTVNdEMsU0E4TVJ5YyxPQUFPamQsRUFBRVE7TUFDWCw4QkFEV0EsR0FDVSxPQURWQTtNQUVELElBQUpMLEVBQUksS0FGQ0s7TUFHTSxzQkFEWEwsSUFDVyxXQUhSSCxFQUVDLHNCQUZDUTtNQUdNLE9BRFhMLENBR0g7SUFuTk8sMEJBcU5TSyxHQUFJLGNEdk1yQnFXLGdCQ3VNaUJyVyxFQUFpQztJQXJOMUMsNEJBc05XQSxHQUFJLGNENU12Qm9XLGdCQzRNbUJwVyxFQUFpQztJQXRONUMscUJBeU5LMGMsT0FBTzFjO01BQ3RCO2tDQURzQkE7T0FDdEIsNkJBRGUwYztPQUNmLEtBQ0lFLFdBREFEO01BQUo7WUFFWXJoQjtRQUNWO2FBRFVBLE1BRFJzaEIsUUFFa0I7VUFDZix5QkFMZTVjLEVBR1YxRSxPQUVMLHNCQUxRb2hCLE9BR0hwaEI7V0FFeUM7VUFDOUMsUUFIS0E7O01BTmEsV0FVRztJQWhPbEIsbUJBbU9HdWhCLE9BQU83YztNQUNwQjtrQ0FEb0JBO09BQ3BCLDZCQURhNmM7T0FDYixLQUFJRixRQUNBRztPQURKLFVBRUlDO01BRko7WUFHWXpoQjtRQUNWO2FBRFVBLE1BRlJ3aEIsUUFHa0I7VUFDZjtrQ0FOYTljLEVBR2hCK2MsT0FDUXpoQjs7WUFFTCxzQkFOTXVoQixPQUlEdmhCO1dBRWtEO1VBQ3ZELFFBSEtBOztNQVZWLFdBY21CO0lBM09YLFNBOE9KMGhCLFVBQVVoZCxFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTNCblMzQixJMkJtU3lCYjtNQUN0QjtXQURrQm9iLE9BQUlwYixJQUNMO1FBQ2pCLHlCQUZnQjdCLEVBQU02QixTQUFFYSxFQUVHLE9BRkxiO1FBRVksUUFGWkE7aUJBRXFDO0lBaFBqRCxlQW1QRjdCLEVBQUUwQyxHQUFJLGlCQUFOMUMsRUFBTSxxQkFBTkEsS0FBRTBDLEVBQThCO0lBblA5QixTQXNQSnlhLGNBQWNuZCxFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTNCM1MvQixJMkIyUzZCYjtNQUMxQjtXQURzQm9iLE9BQUlwYixJQUNUO1FBQ2pCLHlCQUZvQjdCLEVBQU02QixTQUFFYSxFQUVELFVBRkRiO1FBRWEsUUFGYkE7aUJBRTBDO0lBeFAxRCxtQkEyUEU3QixFQUFFMEM7TUFBSSxxQkFBTjFDLEVBQU0scUJBQU5BLEtBQUUwQyxFQUFrQztJQTNQdEMsb0JBOFBHMUMsRUFBRTFFLEVBQUVvSDtNQUNqQixJQUFJZCxFQUFKLHFCQURhNUI7Y0FBRTFFLFFBQ1hzRyxJQURXdEcsR0FHZixpQkFIYTBFLEVBQ1Q0QixFQURXdEcsRUFBRW9IO01BRU0sa0RBQ047SUFqUVAsd0JBb1FPMUMsRUFBRTFFLEVBQUVvSDtNQUNyQixJQUFJZCxFQUFKLHFCQURpQjVCO2NBQUUxRSxRQUNmc0csSUFEZXRHLEdBS2pCLHFCQUxlMEUsRUFDYjRCLEVBRGV0RyxFQUFFb0g7TUFHbkIsa0RBRXFCO0lBelFiLFNBNFFKMGEsV0FBV3BkLEVBQUUxRSxFQUFFb0g7TTNCalV4QixJMkJpVXNCYjtNQUNuQjtnQkFEbUJBO1VBRW5CLHlCQUZpQjdCLEVBQUU2QixTQUFFYSxFQUVNLE9BRlJiO1VBRWUsUUFGZkE7O1FBQ0wsZ0JBQzBDO0lBOVE5QyxnQkFpUkQ3QixFQUFFMEM7TUFBSSxrQkFBTjFDLEVBQU0scUJBQU5BLFdBQUUwQyxFQUFpQztJQWpSbEMscUJBb1JJMUMsRUFBRTFFLEVBQUVvSDtNM0J6VXJCLFMyQnlVbUJwSCw2QkFBRjBFLE1BQUUxRSxHQUlkLGtCQUpZMEUsRUFBRTFFLEVBQUVvSDtNQUVoQixrREFFZ0I7SUF4UlIsU0EyUkoyYSxlQUFlcmQsRUFBRTFFLEVBQUVvSDtNM0JoVjVCLEkyQmdWMEJiO01BQ3ZCO2dCQUR1QkE7VUFFdkIseUJBRnFCN0IsRUFBRTZCLFNBQUVhLEVBRUUsVUFGSmI7VUFFZ0IsUUFGaEJBOztRQUNULFNBQ21EO0lBN1J2RCxvQkFnU0c3QixFQUFFMEM7TUFBSSxzQkFBTjFDLEVBQU0scUJBQU5BLFdBQUUwQyxFQUFxQztJQWhTMUMseUJBbVNRMUMsRUFBRTFFLEVBQUVvSDtNM0J4VnpCLFMyQndWdUJwSCw2QkFBRjBFLE1BQUUxRTtPQUlsQixzQkFKZ0IwRSxFQUFFMUUsRUFBRW9IO01BRXBCLGtEQUVvQjtJQXZTWix1QkEyU00xQyxFQUFFMUUsRUFBRW9IO01BQ3BCLElBQUlkLEVBQUoscUJBRGdCNUI7Y0FBRTFFLFFBQ2RzRyxJQURjdEc7T0FLaEI7U0FBVyxVQUxHMEUsRUFDWjRCLEVBRGN0RyxFQUFFb0gsR0FLUDs7OytCQUE0Qzs7TUFGdkQsa0RBRTREO0lBaFRwRCxrQkFvVEMxQyxFQUFFMEMsR0FBSSxxQkFBTjFDLElBQUUwQyxFQUF1QjtJQXBUMUIsd0JBdVRPMUMsRUFBRTFFLEVBQUVvSDtNM0I1V3hCLFEyQjRXc0JwSCw2QkFBRjBFLE1BQUUxRTtPQUlqQjtTQUFXLFdBSkkwRSxFQUFFMUUsRUFBRW9ILEdBSVI7OzsrQkFBMkM7O01BRnRELGtEQUUyRDtJQTNUbkQsbUJBZ1VDdkMsRUFBT0MsR0FBUSxrQ0FBZkQsRUFBT0MsRUFBMEI7SUFoVWxDLHVCQW9VTWljLElBQUlyYztNQUNwQjs7aUNBRG9CQTtPQUNwQiwwQkFEb0JBO01BQ3BCO1lBRUExRTtRQUNFO21DQUprQjBFLEVBR3BCMUUsT0FIZ0IrZ0I7WUFJZSxTQUgzQjFjO1lBSUssY0FMV0ssRUFHcEIxRSxXQURJc1UsT0FDSnRVO1lBRVMsT0FGVEE7Ozs7TUFGQSxTQUFJcUU7TUFRSixjQVRvQkssSUFFaEI0UCxXQU9ZO0lBN1VOLHFCQWlWRTVQLEdBQUksYUQ5VWRtVyxVQzhVVW5XLEVBQXdCO0lBalYxQixxQkFrVkVBLEdBQUksYUR0VmRrVyxVQ3NWVWxXLEVBQXdCO0lBbFYxQixvQkFvVkdBLEdBQUksY0RqVmZtVyxVQ2lWV25XLEVBQTJCO0lBcFY5QixzQkFxVktBLEdBQUksY0R6VmpCa1csVUN5VmFsVyxFQUEyQjtJQXJWaEMsa0JBeVZEQTtNQUNULFNBQVErYSxJQUFJemY7UUFDVixHQURVQSxNQUNWLHFCQUZPMEUsR0FFYztRQUVYLHFCQUpIQSxFQUNHMUUsR0FHQSxLQUhBQTtRQUlLLFVBRFQ2RSxpQjNCbFpYLE8yQitZVzRhLGdCQUltQjtNQUozQjs0QjNCL1lILE8yQitZV0EsZUFNSDtJQWhXSyxpQkFrV0EvYTtNQUNWLFNBQVErYSxJQUFJemY7UUFDVixHQURVQSxNQUNWLHFCQUZRMEUsR0FFYTtRQUVYLHFCQUpGQSxFQUNFMUUsR0FHQSxLQUhBQTtRQUlTLGFBSlRBLEVBR0o2RSxrQjNCM1pYLE8yQndaVzRhLGdCQUl1QjtNQUovQjs0QjNCeFpILE8yQndaV0EsZUFNSDtJQXpXSyxrQkEyV0R6ZjtNQUNULFlBQ2M7TUFTZDtpQkFDT29IO1VBQ0YsR0FaRDVDLFNBWUMscUJBWEQyRTtZQUdZO2FBQVY2WTtjQUFVLFVBQWQscUJBSEU3WTtZQUdZLHdCQUhaQSxZQUdFNlk7YUFDMEI7WUFEaEIsSUFFVkMsUUFBVSxPQUZWRDtZQUdKLEtBTkU3WSxTQUtFOFksVUFORnpkO1lBT0YsU0FESXlkO1VBT0QsZUFaRDlZLE9BREEzRSxLQVdHNEM7VUFFRjtrQkFDTTtRQWZGcEg7TUFXVCxXQVRJbUosU0FEQTNFLEtBZ0JTO0lBNVhILFNBNHNCSjBkLE1BblRpQmxjLEVBQUVoRyxHQUdiLHFDQUhXZ0csRUFBRWhHLEdBR2E7SUE1WjVCLGtCQThaQ2dHLEVBQUVoRyxHQUNaLHNCQURVZ0csRUFBRWhHLGNBQ2tEO0lBL1pyRCx1QkFpYU1nRyxFQUFFaEcsR0FFYix3QkFGV2dHLEVBQUVoRyxFQUVJO0lBbmFaLHVCQXFhTWdHLEVBQUVoRyxHQUNnQixxQ0FEbEJnRyxFQUFFaEcsR0FFSTtJQXZhWixzQkF5YUtnRyxFQUFFaEcsR0FDaEIsd0JBRGNnRyxFQUFFaEcsY0FDb0Q7SUExYTNELHNCQTRhS2dHLEVBQUVoRyxHQUNoQix3QkFEY2dHLEVBQUVoRyxjQUNvRDtJQTdhM0Qsc0JBK2FLZ0csRUFBRWhHLEdBQ2hCLHFCQURjZ0csRUFBRWhHLGNBQ29EO0lBaGIzRCxzQkFrYktnRyxFQUFFaEcsR0FFWix3QkFGVWdHLEVBQUVoRyxFQUVJO0lBcGJYLHNCQXNiS2dHLEVBQUVoRyxHQUNtQyx3QkFBbEIsaUJBRG5CZ0csRUFBRWhHLEdBRUk7SUF4Ylgsc0JBMGJLZ0csRUFBRWhHLEdBRVosd0JBRlVnRyxFQUFFaEcsRUFFSTtJQTViWCxzQkE4YktnRyxFQUFFaEcsR0FDbUMsd0JBQWxCLGlCQURuQmdHLEVBQUVoRyxHQUVJO0lBaGNYLFNBeXJCTm1pQixNQWxQbUJuYyxFQUFFaEcsRUFBRTZFLEdBRzNCLHdCQUh1Qm1CLEVBQUVoRyxFQUd6QixhQUgyQjZFLEdBR1E7SUExY3pCLHNCQTRjS21CLEVBQUVoRyxFQUFFNkUsR0FFZCx3QkFGVW1CLEVBQUVoRyxFQUFFNkUsRUFFSTtJQTljYixzQkFnZEttQixFQUFFaEcsRUFBRTZFLEdBQ1Esd0JBRFptQixFQUFFaEcsRUFDVSxhQURSNkUsR0FFSTtJQWxkYixzQkFvZEttQixFQUFFaEcsRUFBRTZFLEdBRWQsd0JBRlVtQixFQUFFaEcsRUFBRTZFLEVBRUk7SUF0ZGIsc0JBd2RLbUIsRUFBRWhHLEVBQUU2RTtNQUNRLHdCQURabUIsRUFBRWhHLEVBQzJCLGlCQUR6QjZFLEdBRUk7SUExZGIsc0JBNGRLbUIsRUFBRWhHLEVBQUU2RSxHQUVkLHdCQUZVbUIsRUFBRWhHLEVBQUU2RSxFQUVJO0lBOWRiLHNCQWdlS21CLEVBQUVoRyxFQUFFNkU7TUFDUSx3QkFEWm1CLEVBQUVoRyxFQUMyQixpQkFEekI2RSxHQUVJO0lBbGViO2FBNGVDdWQsUUFBUTVkLEVBQUVrTyxHM0JqaUJ4QixPQzRFYytKLFcwQnFkUWpZLEVBQUVrTyxFQUE4QztJQTVlekQsU0E4ZkMyUCxrQkFBa0JyYyxHQUFJLGNBQUpBLGdCQUFtQjtJQTlmdEMsU0ErZkNzYyxrQkFBa0J0YyxHQUFJLGNBQUpBLGdCQUFvQjtJQS9mdkMsU0FnZ0JDdWMsa0JBQWtCdmMsR0FBSSxjQUFKQSxnQkFBb0I7SUFoZ0J2QyxTQWlnQkN3YyxrQkFBa0J4YztNQUFJLFNBQUpBLFlBQUksb0JBQUpBLE9BREksV0FDb0I7SUFqZ0IzQyxTQWtnQkN5YyxrQkFBa0J6YyxHQUFJLGNBQUpBLGdCQUFrQjtJQWxnQnJDLFNBd2dCQzBjLGNBQWNDLEdBQUdDLEdBQUdDO01BQy9CLFFBRHlCRixrQkFBR0MsZ0JBQUdDLE9BR2Y7SUEzZ0JOLFNBNmdCQ0MsY0FBY0gsR0FBR0MsR0FBR0MsR0FBR0U7TUFDbEMsUUFEeUJKLGlCQUFHQyxrQkFBR0MsZ0JBQUdFLE9BSWxCO0lBamhCTix5QkFtaEJRL2MsRUFBRWhHO01BQ1gsc0JBRFNnRyxFQUFFaEcsR0FDWCx5QkFEU2dHO01BQ1QsVUFoQmdCMmM7Ozs7OztjQXNDckIsSUFBSXBjLElBdkJZdkc7Y0F1QmhCLEdBcEJBK0UsTUFvQkl3QixJQUE2QjtjQUFqQyxJQUNJcWMsR0FBSyxzQkF4Qks1YyxFQXVCVk87Y0FDbUIscUJBQW5CcWMsSUFBNkM7Y0FEakQsSUFFSWhCLElBRkFyYjtjQUVKLEdBdEJBeEIsTUFzQkk2YyxJQUE2QjtjQUZqQyxJQUdJaUIsR0FBSyxzQkExQks3YyxFQXlCVjRiO2NBQ21CLHlCQUFuQmlCO3VCQUE2Qzt1QkFDdkMsd0JBMUNXRixHQXVDakJDLEdBRUFDOztjQUdKLElBQUlHLElBN0JZaGpCO2NBNkJoQixHQTFCQStFLE1BMEJJaWUsSUFBNkI7Y0FBakMsSUFDSUMsS0FBSyxzQkE5QktqZCxFQTZCVmdkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FEakQsSUFFSUMsSUFGQUY7Y0FFSixHQTVCQWplLE1BNEJJbWUsSUFBNkI7Y0FGakMsSUFHSUMsS0FBSyxzQkFoQ0tuZCxFQStCVmtkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FIakQsSUFJSUMsSUFGQUY7Y0FFSixHQTlCQW5lLE1BOEJJcWUsSUFBNkI7Y0FKakMsSUFLSUwsR0FBSyxzQkFsQ0svYyxFQWlDVm9kO2NBQ21CLHlCQUFuQkw7dUJBQTZDO3VCQUN2Qyx3QkFsRFdKLEdBNkNqQk0sS0FFQUUsS0FFQUo7O2NBV0osSUFBSU0sS0E3Q1lyakI7Y0E2Q2hCLEdBMUNBK0UsTUEwQ0lzZSxLQUE2QjtjQUFqQyxJQUNJQyxLQUFLLHNCQTlDS3RkLEVBNkNWcWQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQURqRCxJQUVJQyxLQUZBRjtjQUVKLEdBNUNBdGUsTUE0Q0l3ZSxLQUE2QjtjQUZqQyxJQUdJQyxLQUFLLHNCQWhES3hkLEVBK0NWdWQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQUhqRCxJQUlJQyxLQUZBRjtjQUVKLEdBOUNBeGUsTUE4Q0kwZSxLQUE2QjtjQUpqQyxJQUtJQyxLQUFLLHNCQWxESzFkLEVBaURWeWQ7Y0FDbUIseUJBQW5CQzt1QkFBNkM7dUJBQ3ZDLHdCQWxFV2YsR0E2RGpCVyxLQUVBRSxLQUVBRTs7OztjQWJKLElBQUlDLElBckNZM2pCO2NBcUNoQixHQWxDQStFLE1Ba0NJNGUsSUFBNkI7Y0FBakMsSUFDSUMsS0FBSyxzQkF0Q0s1ZCxFQXFDVjJkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FEakQsSUFFSUMsSUFGQUY7Y0FFSixHQXBDQTVlLE1Bb0NJOGUsSUFBNkI7Y0FGakMsSUFHSUMsS0FBSyxzQkF4Q0s5ZCxFQXVDVjZkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FIakQsSUFJSUMsSUFGQUY7Y0FFSixHQXRDQTllLE1Bc0NJZ2YsSUFBNkI7Y0FKakMsSUFLSUMsS0FBSyxzQkExQ0toZSxFQXlDVitkO2NBQ21CLHlCQUFuQkM7dUJBQTZDO3VCQUN2Qyx3QkExRFdyQixHQXFEakJpQixLQUVBRSxLQUVBRTs7dUJBekRpQnJCO1lBMEJyQixJQUFJc0IsS0FYWWprQjtZQVdoQixHQVJBK0UsTUFRSWtmLEtBQTZCO1lBQWpDLElBQ0lDLEtBQUssc0JBWktsZSxFQVdWaWU7WUFDbUIscUJBQW5CQyxNQUE2QztZQURqRCxJQUVJQyxLQUZBRjtZQUVKLEdBVkFsZixNQVVJb2YsS0FBNkI7WUFGakMsSUFHSUMsS0FBSyxzQkFkS3BlLEVBYVZtZTtZQUNtQix5QkFBbkJDO3FCQUE2QztxQkFDdkMsd0JBOUJXekIsR0EyQmpCdUIsS0FFQUU7O1FuQnRFRjtVbUJ5RUYsSUFBSUMsSUFqQllya0I7VUFpQmhCLEdBZEErRSxNQWNJc2YsSUFBNkI7VUFBakMsSUFDSUMsS0FBSyxzQkFsQkt0ZSxFQWlCVnFlO1VBQ21CLHFCQUFuQkMsTUFBNkM7VUFEakQsSUFFSUMsSUFGQUY7VUFFSixHQWhCQXRmLE1BZ0JJd2YsSUFBNkI7VUFGakMsSUFHSUMsS0FBSyxzQkFwQkt4ZSxFQW1CVnVlO1VBQ21CLHlCQUFuQkM7bUJBQTZDO21CQUN2Qyx3QkFwQ1c3QixHQWlDakIyQixLQUVBRTs7cUJBbkNpQjdCLElBb0JILGlCQXBCR0E7O1VBc0JyQixJQUFJOEIsS0FQWXprQjtVQU9oQixHQUpBK0UsTUFJSTBmLEtBQTZCO1VBQWpDLElBdEJ3QkMsS0F1QmYsc0JBUksxZSxFQU9WeWU7VUFDbUIseUJBdkJDQzttQkF1QnlCO21CQS9DMUN0QyxXQXdCY08sZ0JBQUcrQjtNQW1FckIscUJBQWE7SUF2a0JWLHlCQXlrQlExZSxFQUFFaEcsRUFJbEIwUztNQUhGLFNBQUlpUztRM0IvbkJQO00yQituQkcsSUFDSTVmLElBREoscUJBRGtCaUI7Y0FJaEIwTTtRQUNPLFNBRFBBO1VBSU8sVUFKUEE7WUFVTyxXQVZQQTtjQWlCTyxhQWpCUEEsRUF5Qks7Y0FQSCxJQUFJa1MsS0F0Qlk1a0I7Y0FzQmhCLE9BcEJBK0UsTUFvQkk2Zjs7d0JBRUgsZUF4QmE1ZSxFQUFFaEcsUUFJbEIwUzt3QkFxQkcsSUF6QmExTSxFQUFFaEcsaUJBSWxCMFM7d0JBc0JHLElBMUJhMU0sRUFBRWhHLGlCQUlsQjBTO3dCQXVCRyxJQTNCYTFNLEVBc0JWNGUsV0FsQk5sUzs7WUFXRSxJQUFJbVMsT0FmWTdrQjtZQWVoQixPQWJBK0UsTUFhSThmOztzQkFFSCxlQWpCYTdlLEVBQUVoRyxRQUlsQjBTO3NCQWNHLElBbEJhMU0sRUFBRWhHLGlCQUlsQjBTO3NCQWVHLElBbkJhMU0sRUFlVjZlLGFBWE5uUzs7VUFLRSxJQUFJb1MsT0FUWTlrQjtVQVNoQixPQVBBK0UsTUFPSStmOztvQkFFSCxlQVhhOWUsRUFBRWhHLFFBSWxCMFM7b0JBUUcsSUFaYTFNLEVBU1Y4ZSxhQUxOcFM7O1FBRUUsZUFOYzFNLEVBQUVoRyxFQUlsQjBTO1FBRUU7TUFGYyw0QkF5QkM7SUF0bUJULHdCQXltQk8xTTtNQUFqQiw2QkFBaUJBLFdBQUVoRztNQUNqQjtXQURXK0UsTUFBTS9FLEVBQ0Q7UUFFTSxnQ0FIUGdHLEVBQUVoRztRQUdLOzs7Ozs7Z0JBdUJsQixJQUFJNGtCLEtBMUJTNWtCO2dCQTZCVjs7bUJBN0JJK0UsTUEwQkg2Zjs7O2tCQUVELGtCQUFrQixzQkE1QlY1ZSxFQUFFaEc7OztrQkE2QlYsa0JBQWtCLHNCQTdCVmdHLEVBMEJQNGU7a0JBS0MsUUFMREEsYUExQlM1a0I7Z0JBOEJSOztnQkFHTCxJQUFJOGtCLE9BakNTOWtCO2dCQXFDVjs7bUJBckNJK0UsTUFpQ0grZjs7O2tCQUVELGtCQUFrQixzQkFuQ1Y5ZSxFQUFFaEc7OztrQkFvQ1Ysa0JBQWtCLHNCQXBDVmdHLEVBQUVoRzs7O2tCQXFDVixrQkFBa0Isc0JBckNWZ0csRUFpQ1A4ZTtrQkFNQyxRQU5EQSxlQWpDUzlrQjtnQkFzQ1I7O2dCQVdMLElBQUkra0IsT0FqRFMva0I7Z0JBcURWOzttQkFyREkrRSxNQWlESGdnQjs7O2tCQUVELGtCQUFrQixzQkFuRFYvZSxFQUFFaEc7OztrQkFvRFYsa0JBQWtCLHNCQXBEVmdHLEVBQUVoRzs7O2tCQXFEVixrQkFBa0Isc0JBckRWZ0csRUFpRFArZTtrQkFNQyxRQU5EQSxlQWpEUy9rQjtnQkFzRFI7Ozs7Z0JBYkwsSUFBSWdsQixPQXpDU2hsQjtnQkE2Q1Y7O21CQTdDSStFLE1BeUNIaWdCOzs7a0JBRUQsa0JBQWtCLHNCQTNDVmhmLEVBQUVoRzs7O2tCQTRDVixrQkFBa0Isc0JBNUNWZ0csRUFBRWhHOzs7a0JBNkNWLGtCQUFrQixzQkE3Q1ZnRyxFQXlDUGdmO2tCQU1DLFFBTkRBLGVBekNTaGxCO2dCQThDUjs7O2NBbENMLElBQUlpbEIsT0FaU2psQjtjQWVWOztpQkFmSStFLE1BWUhrZ0I7OztnQkFFRCxrQkFBa0Isc0JBZFZqZixFQUFFaEc7OztnQkFlVixrQkFBa0Isc0JBZlZnRyxFQVlQaWY7Z0JBS0MsUUFMREEsZUFaU2psQjtjQWdCUjs7VW5COUpMO1ltQmlLQSxJQUFJNmtCLE9BbkJTN2tCO1lBc0JWOztlQXRCSStFLE1BbUJIOGY7OztjQUVELGtCQUFrQixzQkFyQlY3ZSxFQUFFaEc7OztjQXNCVixrQkFBa0Isc0JBdEJWZ0csRUFtQlA2ZTtjQUtDLFFBTERBLGVBbkJTN2tCO1lBdUJSOzsrQkFuQmEsUUFKTEE7O1lBTWIsSUFBSWtsQixPQU5TbGxCO1lBUVY7O2VBUkkrRSxNQU1IbWdCOzs7Y0FFRCxrQkFBa0Isc0JBUlZsZixFQU1Qa2Y7Y0FJQyxRQUpEQSxlQU5TbGxCO1lBU1I7UUErQ0YsU0FFYztJQW5xQmIsNEJBdXFCV2dHLEVBQUVoRztNQUN2QixJQUNJK0UsSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO1FBSXZCLEdBSnVCQSxNQUVuQitFLElBRVk7UUFDVixJQUdKb2dCLEdBSEksTUFMZW5mLEVBQUVoRztvQkFRckJtbEI7VUFETyxXQUNQQSxHQURxQjtVQUVuQixJQUFJUCxLQVRlNWtCO1VBU25CLEdBUEErRSxNQU9JNmYsS0FDZSxvQkFSbkI3ZixNQUZtQi9FO1VBU25CLElBR0UwUyxFQURJLE1BWFcxTSxFQUFFaEc7c0JBWWpCMFM7WUFFRSxJQUFJQyxNQU5Wd1MsbUJBSUl6UztZQUVFLGlCQUFJQztVQUY2QjtRQU5KLGlCQUVuQ3dTO01BTHVCLDJDQVlOO0lBdHJCVCw0QkF3ckJXbmYsRUFBRWhHLEVBS3JCMFM7TUFKRixJQUNJM04sSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO2dCQUtyQjBTO1VBQ08sV0FEUEE7WUFJTyxhQUpQQSxFQVdLO1lBTkgsSUFBSWtTLEtBVmU1a0I7WUFVbkIsR0FSQStFLE1BUUk2ZixLQUNlO1lBRG5CO2FBRUEsSUFQRmxTO2FBT0UsV0FBSUM7YUFBSixXQUFJQTtZQUdKLE1BZmlCM00sRUFBRWhHLEVBYWZtbEI7WUFFUSxNQWZLbmYsRUFBRWhHLFVBY2ZvbEI7WUFDUTtVQVJaLElBQUlQLE9BUGU3a0I7VUFPbkIsT0FMQStFLE1BS0k4ZixVQUN1QixNQVJWN2UsRUFBRWhHLEVBS3JCMFM7UUFBZ0I7TUFGTyw2Q0FhTjtJQXhzQlQsMkJBMnNCTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFFRDtRQUNoQixHQUhpQkEsTUFBTitFLElBR0s7UUFDVixJQUVKMk4sRUFGSSxNQUpTMU0sRUFBRWhHO29CQU1mMFM7VUFBTyxXQUFQQSxFQUFxQjtVQUVuQixJQUFJa1MsS0FSUzVrQjtVQVFiLEdBUk8rRSxNQVFINmYsS0FDZTtVQURuQixJQUdFalMsSUFESSxNQVZLM00sRUFBRWhHO3NCQVdYMlM7WUFDTyxRQVpJM1M7VUFXd0I7UUFQbkMsSUFDK0IsSUFMcEJBO2lCQWNJO0lBenRCYiw0QkE2dEJXZ0csRUFBRWhHO01BQ3ZCLElBQ0krRSxJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7UUFJdkIsR0FKdUJBLE1BRW5CK0UsSUFFWTtRQUNWLElBR0pvZ0IsR0FISSxpQkFMZW5mLEVBQUVoRztvQkFRckJtbEI7VUFETyxXQUNQQSxHQURxQjtVQUVuQixJQUFJUCxLQVRlNWtCO1VBU25CLEdBUEErRSxNQU9JNmYsS0FDZSxvQkFSbkI3ZixNQUZtQi9FO1VBU25CLElBR0UwUyxFQURJLGlCQVhXMU0sRUFBRWhHO3NCQVlqQjBTO1lBRUUsSUFBSUMsTUFOVndTLG1CQUlJelM7WUFFRSxpQkFBSUM7VUFGNkI7UUFOSixpQkFFbkN3UztNQUx1Qiw2Q0FZTjtJQTV1QlQsNEJBOHVCV25mLEVBQUVoRyxFQUtyQjBTO01BSkYsSUFDSTNOLElBREoscUJBRHFCaUI7Y0FBRWhHLFFBRW5CK0UsTUFGbUIvRTtnQkFLckIwUztVQUNPLFdBRFBBO1lBSU8sYUFKUEEsRUFXSztZQU5ILElBQUlrUyxLQVZlNWtCO1lBVW5CLEdBUkErRSxNQVFJNmYsS0FDZTtZQURuQjthQUVBLElBUEZsUzthQU9FLFdBQUlDO2FBQUosV0FBSUE7WUFHSixpQkFmaUIzTSxFQUFFaEcsRUFhZm1sQjtZQUVRLGlCQWZLbmYsRUFBRWhHLFVBY2ZvbEI7WUFDUTtVQVJaLElBQUlQLE9BUGU3a0I7VUFPbkIsT0FMQStFLE1BS0k4ZixVQUN1QixpQkFSVjdlLEVBQUVoRyxFQUtyQjBTO1FBQWdCO01BRk8sNkNBYU47SUE5dkJULDJCQWl3Qk8xTTtNQUFqQiw2QkFBaUJBLFdBQUVoRztNQUNqQjtXQURXK0UsTUFBTS9FLEVBRUQ7UUFDaEIsR0FIaUJBLE1BQU4rRSxJQUdLO1FBQ1YsSUFFSjJOLEVBRkksaUJBSlMxTSxFQUFFaEc7b0JBTWYwUztVQUFPLFdBQVBBLEVBQXFCO1VBRW5CLElBQUlrUyxLQVJTNWtCO1VBUWIsR0FSTytFLE1BUUg2ZixLQUNlO1VBRG5CLElBR0VqUyxJQURJLGlCQVZLM00sRUFBRWhHO3NCQVdYMlM7WUFDTyxRQVpJM1M7VUFXd0I7UUFQbkMsSUFDK0IsSUFMcEJBO2lCQWNJO0lBL3dCYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CRWJId0UsRUFBRTRDLEdBQ1QsbUNBRE81QyxFQUFFNEMsR0FDUTtvQkFDVjVDLEVBQUVOLEdBQ1QsbUNBRE9NLEVBQUVOLEdBQ1E7b0JBRVZRO01BQ1AsaUNBQU8scUJBREFBLElBQ2M7bUJBR2ZBLEVBQUVvRCxJQUFJQztNQUNaLGdDQUFNLHFCQURBckQsR0FBRW9ELElBQUlDLEtBQ2dCO3NCQXNCbkJnWixJQUVQemE7TTdCMUVMLEc2QjBFS0E7UUFBSyxpQ0FGRXlhLGlCQUVQemEsRUFBSzs7Ozs7Y0FsQmlCO2VBS2hCSztlQUxLOUIsaUNBT2tCbWM7ZUFQUCxhQUFYbmMsSUFBaUM7O3FCQUt0QzhCOztxQkFETTs7O1VBZ0I4QixrREFGMUNMOzs7OztvQkFQTTBZO2dCQUNOLHdCQUxpQmlDO2dCQU1qQjtrQkFHT0YsTUFUVUUsVUFLakIsZ0NBTDZCRDtnQkFNN0I7aUVBTjZCQTs7eUJBSXZCaEM7O2NBRE4sd0JBSGlCaUMsUUFHakI7d0NBSGlCQTtNQVVYO29CQVNEL2MsRUFBRVE7TUFDVCwrQkFEU0EsV0FDVDs7O1FBQTZCO3FCQUR0QlIsRUFDc0IsdUJBRHBCUSxFQUNUMUU7VUFBNkIsU0FBN0JBOzs7Y0FBb0Q7cUJBRzVDa0UsRUFBRVE7TUFDViwrQkFEVUEsV0FDVjs7O1FBQTZCO3FCQURyQlIsRUFDUmxFLEVBQTZCLHVCQURuQjBFLEVBQ1YxRTtVQUE2QixTQUE3QkE7OztjQUFzRDttQkFFaERrRSxFQUFFUTtNQUNSLGtDQURNUixFQUNFLHFCQURBUSxJQUNjO29CQUNmUixFQUFFUTtNQUNULG1DQURPUixFQUNFLHFCQURBUSxJQUNjOzBCQUNWUixFQUFFVyxFQUFFNEM7TUFDRixvQkFERnZELEVBQ0UscUJBREFXLEdBQUU0QyxFQUNPO3lCQUNadkQsRUFBRXVELEVBQUU1QztNQUNBLG1CQURKWCxFQUFFdUQsRUFDRSxxQkFEQTVDLEdBQ087c0JBQ2RYLEVBQUVRLEdBQ0EsZ0JBREZSLEVBQ0UscUJBREFRLEdBQ087dUJBQ1JSLEVBQUVRLEdBQ0EsaUJBREZSLEVBQ0UscUJBREFRLEdBQ087YUFNakIyZ0I7TUFBVzs7Ozs7TXJCc2FQLG1CcUJwYU07b0JBRUwzZ0I7TUFDSixxQkFESUEsU0FDUSxPQURSQTtNQUU4Qjs7UUFBN0IsV0FBSCx1QkFGRUE7OztRQUU4QixrQ0FGOUJBO09BSUYsT0FKRUE7TUFHSSxpQ0FBUSxxQkFIWkEsSUFJRDt1QkFHbUJBO01BQXpCLDRCQUF5QkEsR0FBSTFFO01BQzNCO1dBRHlCd0UsS0FBRXhFLEVBQ1osT0FEUTBFO1FBRXJCLGlDQUZxQkEsRUFBSTFFLEdBRXpCOzs7OztRckJ5WkU7U3FCdlpNLHNDQUFXLHFCQUpFMEU7UUFFckIsSUFHTyxJQUxrQjFFO2lCQU9FO2FBR3pCc2xCLFlBQVU1Z0IsRUFBRWlkLElBQUkzaEIsRUFBRW9IO003Qi9IM0IsSTZCK0h5QmI7TUFDdEI7V0FEa0JvYixPQUFJcGIsSUFDTDtRQUNqQiwwQkFGZ0I3QixFQUFNNkIsU0FBRWEsRUFFRyxPQUZMYjtRQUVZLFFBRlpBO2lCQUVxQztxQkFHbkQ3QixFQUFFMEMsR0FBSSxtQkFBTjFDLEVBQU0sc0JBQU5BLEtBQUUwQyxFQUE4QjthQUdsQ21lLGdCQUFjN2dCLEVBQUVpZCxJQUFJM2hCLEVBQUVvSDtNN0J2SS9CLEk2QnVJNkJiO01BQzFCO1dBRHNCb2IsT0FBSXBiLElBQ1Q7UUFDakIsMEJBRm9CN0IsRUFBTTZCLFNBQUVhLEVBRUQsVUFGRGI7UUFFYSxRQUZiQTtpQkFFMEM7eUJBR3hEN0IsRUFBRTBDO01BQUksdUJBQU4xQyxFQUFNLHNCQUFOQSxLQUFFMEMsRUFBa0M7MEJBR25DMUMsRUFBRTFFLEVBQUVvSDtNQUNqQixJQUFJZCxFQUFKLHNCQURhNUI7Y0FBRTFFLFFBQ1hzRyxJQURXdEcsR0FHYixtQkFIVzBFLEVBQ1Q0QixFQURXdEcsRUFBRW9IO01BRU0sb0RBQ0o7OEJBR0YxQyxFQUFFMUUsRUFBRW9IO01BQ3JCLElBQUlkLEVBQUosc0JBRGlCNUI7Y0FBRTFFLFFBQ2ZzRyxJQURldEcsR0FLakIsdUJBTGUwRSxFQUNiNEIsRUFEZXRHLEVBQUVvSDtNQUduQixvREFFcUI7YUFHakJvZSxhQUFXOWdCLEVBQUUxRSxFQUFFb0g7TTdCN0p4QixJNkI2SnNCYjtNQUNuQjtnQkFEbUJBO1VBRW5CLDBCQUZpQjdCLEVBQUU2QixTQUFFYSxFQUVNLE9BRlJiO1VBRWUsUUFGZkE7O1FBQ0wsZ0JBQzBDO3NCQUcvQzdCLEVBQUUwQztNQUFJLG9CQUFOMUMsRUFBTSxzQkFBTkEsV0FBRTBDLEVBQWlDOzJCQUc5QjFDLEVBQUUxRSxFQUFFb0g7TTdCcktyQixTNkJxS21CcEgsOEJBQUYwRSxNQUFFMUU7T0FJZCxvQkFKWTBFLEVBQUUxRSxFQUFFb0g7TUFFaEIsb0RBRWdCO2FBR1pxZSxpQkFBZS9nQixFQUFFMUUsRUFBRW9IO003QjVLNUIsSTZCNEswQmI7TUFDdkI7Z0JBRHVCQTtVQUV2QiwwQkFGcUI3QixFQUFFNkIsU0FBRWEsRUFFRSxVQUZKYjtVQUVnQixRQUZoQkE7O1FBQ1QsU0FDbUQ7MEJBR3BEN0IsRUFBRTBDO01BQUksd0JBQU4xQyxFQUFNLHNCQUFOQSxXQUFFMEMsRUFBcUM7K0JBR2xDMUMsRUFBRTFFLEVBQUVvSDtNN0JwTHpCLFM2Qm9MdUJwSCw4QkFBRjBFLE1BQUUxRTtPQUlsQix3QkFKZ0IwRSxFQUFFMUUsRUFBRW9IO01BRXBCLG9EQUVvQjs2QkFHTjFDLEVBQUUxRSxFQUFFb0g7TUFDcEIsSUFBSWQsRUFBSixzQkFEZ0I1QjtjQUFFMUUsUUFDZHNHLElBRGN0RztPQUtoQjtTQUFXLFlBTEcwRSxFQUNaNEIsRUFEY3RHLEVBQUVvSCxHQUtQOzs7K0JBQTRDOztNQUZ2RCxvREFFNEQ7d0JBR25EMUMsRUFBRTBDLEdBQUksdUJBQU4xQyxJQUFFMEMsRUFBdUI7OEJBR25CMUMsRUFBRTFFLEVBQUVvSDtNN0J0TXhCLFE2QnNNc0JwSCw4QkFBRjBFLE1BQUUxRTtPQUlqQjtTQUFXLGFBSkkwRSxFQUFFMUUsRUFBRW9ILEdBSVI7OzsrQkFBMkM7O01BRnRELG9EQUUyRDsrQkFFM0MxQztNQUNsQiw4Q0FBa0IscUJBREFBLElBQ2M7K0JBQ2RBO01BQ2xCLDhDQUFrQixxQkFEQUEsSUFDYztnQ0FDYkE7TUFDbkIsNkNBQW1CLHFCQURBQSxJQUNjO2tDQUNaQTtNQUNyQiwrQ0FBcUIscUJBREFBLElBQ2M7MkJBR3BCMGMsT0FBTzFjO01BQ3RCO21DQURzQkE7T0FDdEIsOEJBRGUwYztPQUNmLEtBQ0lFLFdBREFEO01BQUo7WUFFWXJoQjtRQUNWO2FBRFVBLE1BRFJzaEIsUUFFa0I7VUFDZiwwQkFMZTVjLEVBR1YxRSxPQUVMLHVCQUxRb2hCLE9BR0hwaEI7V0FFeUM7VUFDOUMsUUFIS0E7O01BTlosV0FVNEI7eUJBR2Z1aEIsT0FBTzdjO01BQ3BCO21DQURvQkE7T0FDcEIsOEJBRGE2YztPQUNiLEtBQUlGLFFBQ0FHO09BREosVUFFSUM7TUFGSjtZQUdZemhCO1FBQ1Y7YUFEVUEsTUFGUndoQixRQUdrQjtVQUNmO21DQU5hOWMsRUFHaEIrYyxPQUNRemhCOztZQUVMLHVCQU5NdWhCLE9BSUR2aEI7V0FFa0Q7VUFDdkQsUUFIS0E7O01BVlYsV0FjbUI7NkJBR0wrZ0IsSUFBSXJjO01BQ3BCOztrQ0FEb0JBO09BQ3BCLDJCQURvQkE7TUFDcEI7WUFFQTFFO1FBQ0U7b0NBSmtCMEUsRUFHcEIxRSxPQUhnQitnQjtZQUllLFNBSDNCMWM7WUFJSyxnQkFMV0ssRUFHcEIxRSxXQURJc1UsT0FDSnRVO1lBRVMsT0FGVEE7Ozs7TUFGQSxTQUFJcUU7TUFRSixnQkFUb0JLLElBRWhCNFAsV0FPWTt5QkFJSjVQO01BQ1osd0NBQVkscUJBREFBLElBQ2M7eUJBQ2RBO01BQ1osd0NBQVkscUJBREFBLElBQ2M7MEJBQ2JBO01BQ2IsdUNBQWEscUJBREFBLElBQ2M7NEJBQ1pBO01BQ2YseUNBQWUscUJBREFBLElBQ2M7dUJBSWxCRyxFQUFPQyxHQUFRLDJCQUFmRCxFQUFPQyxFQUEwQjtzQkFLbkNKLEdBQUkscUNBQUpBLEdBQXFCO3VCQUVwQkEsR0FBSSxvQ0FBSkEsR0FBc0I7c0JBRXZCZ2hCLEdBQUkscUNBQUpBLEdBQXFCOytCQUlaaGhCLEVBQUUxRTtNQUFzQiw0Q0FBeEIwRSxHQUFFMUUsRUFBK0I7OEJBQ2xDMEU7TUFBcUIsMkNBQXJCQSxHQUE0QjtrQ0FFeEJBLEVBQUUxRTtNQUF5QiwrQ0FBM0IwRSxHQUFFMUUsRUFBa0M7aUNBQ3JDMEU7TUFBd0IsOENBQXhCQSxHQUErQjtrQ0FFOUJBLEVBQUUxRTtNQUF5QiwrQ0FBM0IwRSxHQUFFMUUsRUFBa0M7aUNBQ3JDMEU7TUFBd0IsOENBQXhCQSxHQUErQjt3QkFTeENBLEVBQUUxRSxHQUFlLHFDQUFqQjBFLEdBQUUxRSxFQUF3Qjs2QkFDckIwRSxFQUFFMUU7TUFBb0IsNkNBQXRCMEUsR0FBRTFFLEVBQTZCOzZCQUMvQjBFLEVBQUUxRTtNQUFvQiwwQ0FBdEIwRSxHQUFFMUUsRUFBNkI7NEJBQ2hDMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLDZDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQiw2Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDdlIzQzJsQixxQkFBYyxRQUFJO2FBQ2xCQyx1QkFBZ0IsUUFBQzthQUNqQkMsbUJBQWUsWUFBSTt1QkFGbkJGLFNBQ0FDLFdBQ0FDOzthQ1lBQyxVQUFVQyxLQUFLamUsSUFBSUMsSUFBSTNELEVBQUU0aEI7TS9CaEM5Qjs7O1ErQmdDb0JsZTs7OztRQUFJQzs7OytCQUFUZ2UsUUFBU2hlLFdBQUpEO09BR1osMkNBSE9pZSxLQUFLamUsSUFBSUMsSUFBSTNELEVBQUU0aEI7TUFFdEIsa0RBQ3FDO1FBWXhDQzthQUNBQyxVQUFVSCxLQUFLamU7TS9CaERwQixRK0JnRG9CQSxnQ0FBTGllLGtCQUFLamU7T0FHWiw4QkFIT2llLEtBQUtqZTtNQUVaLHlDQUN5QjthQUM1QnFlLFdBQVdKLEtBQUtqZSxLQUFvQixzQkFBekJpZSxLQUFLamUsUUFBc0M7YUFFdERzZSxXQUFXTCxLQUFLamU7TS9CdERyQixRK0JzRHFCQSxnQ0FBTGllLGtCQUFLamU7UUFJTixJQUFOQyxJQUFNLHVCQUpDZ2UsS0FBS2plO1FBSU4sNkJBSkNpZSxjQUlQaGUsZ0JBSllEO2lCQU1YO2lCQUNBLG9DQVBNaWUsS0FBS2plO01BRWIsMENBTUY7YUFFRHVlLFlBQVlOLEtBQUtqZTtNQUdSLHVDQUhHaWUsTUFBS2plLElBR3lCOzs7OztPQW5DMUNnZTs7T0FzQkFNO09BVUFDO09BakJBSjtPQUNBQztPQUlBQzs7SUNoQmE7b0JBWVI3ZixFQUFFcEM7TUFDVCxTQURPb0MsRUFDTztNQUNkLFFBRk9BO1FBTUksdUJBTkpBLEVBTWEsV0FOWHBDLE1BTUUsS0FOSm9DLFVBTUk7O2NBQ1Z0RztVQUNFO29CQURGQSxLQUNtQixXQVJYa0UsRUFPUmxFO1lBQ0UsU0FERkE7OztRQUdBLE9BSkl1SjtNQUpTLGtDQVFWO0lBdEJXLHVCQXdCRCtjLEdBQUdDLEdBQUdoUztNQUNWLHVCQURJK1IsUUFDSixLQURJQSxXQUNKOztZQUNWemhCO1FBQ0U7VUFBaUIsUUFEbkJBLEtBQ21CLGVBSEYwaEIsR0FBR2hTO1VBR0QsU0FEbkIxUDs7O01BR0EsT0FKSTBFLEdBSUQ7SUE3QlksZ0JBaUNSOUI7TUFDUCxJQUFJbkIsRUFER21CLGFBQ1AsYUFBSW5CLE1BQXdDLGVBRHJDbUIsSUFDSG5CLEVBQXdEO0lBbEM3QyxrQkFvQ051WCxHQUFHRDtNQUNaLElBQUloWSxHQURLaVk7TUFDVCxhQUFJalk7ZUFDVyxPQUZIZ1k7O2lCQUdlLGVBSGxCQyxLQUNMalk7aUJBR0MsMEJBSklpWSxHQUFHRCxHQUlVO0lBeENQLGVBMENUblcsRUFBRUssSUFBSUM7TWhDOUVmLFFnQzhFV0QsWUFBSUMsV0FBTk4sZUFBTU0sV0FBSkQ7T0FHSCxzQkFIQ0wsRUFBRUssSUFBSUM7TUFFUCxpQ0FDb0I7SUE3Q1YsZ0JBK0NSTixFQUFFSyxJQUFJQyxJQUFJM0Q7TWhDbkZwQixRZ0NtRlkwRCxZQUFJQyxXQUFOTixlQUFNTSxXQUFKRDtPQUdKLCtCQUhFTCxFQUFFSyxJQUFJQyxJQUFJM0Q7TUFFWixrQ0FDdUI7SUFsRGIsZ0JBb0RSeVosR0FBR2dELEtBQUtqRCxHQUFHa0QsS0FBSy9ZO01oQ3hGMUI7OztRZ0N3RjBCQTs7OztRQUFiOFk7OztVQUFIaEQsZ0JBQWdCOVYsV0FBYjhZOzs7O1FBQVFDOzs7VUFBSGxELGdCQUFRN1YsV0FBTCtZO09BSWIsK0JBSkVqRCxHQUFHZ0QsS0FBS2pELEdBQUdrRCxLQUFLL1k7TUFHbEIsa0NBQytCO0lBeERyQixnQkEwRFI3RCxFQUFFdUQ7TUFDVCxTQURTQSxxQkFDVDs7O1FBQTZCO3FCQUR0QnZELEVBQUV1RCxNQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBbUQ7SUEzRHBDLGlCQTZEUGtFLEVBQUV1RCxFQUFFekI7TUFDWixHQURVeUIsaUJBQUV6QjtPQUVWO01BRUEsU0FKUXlCLHFCQUlSOzs7UUFBNkI7cUJBSnZCdkQsRUFBRXVELE1BSVJ6SCxHQUpVZ0csTUFJVmhHO1VBQTZCLFNBQTdCQTs7O2NBQXFFO0lBakV4RCxlQW1FVGtFLEVBQUV1RDtNQUNSLElBQUluQixFQURJbUI7TUFDUixTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRWUsV0FIYnBDLEVBQUV1RCxPQUdFLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FMYmtFLEVBQUV1RCxNQUlOekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBS0g7SUEzRVksZ0JBNkVSSCxFQUFFdUQsRUFBRXpCO01BQ1gsT0FEU3lCLGFBQ1QsR0FEV3pCO01BQ1gsR0FBSXdnQixPQUNBQyxHQUVGO01BQ0csU0FKREQsR0FLYTtNQUxqQixJQU1ZLGlCQU5SQSxHQU1rQixXQVBmdGlCLEVBQUV1RCxLQUFFekIsT0FPQyxLQU5Sd2dCLFdBTVE7O1lBQ1J4bUI7UUFDRTtnQkFERkEsS0FDaUIsV0FUZGtFLEVBQUV1RCxNQVFMekgsR0FST2dHLE1BUVBoRztVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FNTDtJQTFGWSxpQkE0RlBILEVBQUV1RDtNQUNWLFNBRFVBLHFCQUNWOzs7UUFBNkI7cUJBRHJCdkQsRUFDUmxFLEVBRFV5SCxNQUNWekg7VUFBNkIsU0FBN0JBOzs7Y0FBc0Q7SUE3RnZDLGdCQStGUmtFLEVBQUV1RDtNQUNULElBQUluQixFQURLbUI7TUFDVCxTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRWUsV0FIWnBDLElBQUV1RCxPQUdDLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FMWmtFLEVBSUxsRSxFQUpPeUgsTUFJUHpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO0lBdkdZLG1CQXlHTG9EO01BQ1YsUUFEVUEscUJBQ0t6SCxNQUFFdUo7TUFDZjtnQkFEYXZKO1VBQzBCLGFBRi9CeUgsTUFDS3pILEdBQUV1SixLQUN3QixJQUQxQnZKLGdCQUFFdUo7UUFDRCxPQURDQSxJQUVPO0lBNUdULFNBK0dUb2Q7Ozs7VUFFSTs7OzttQkFBTEM7O1FBREc7SUFoSE8saUJBcUhidGdCO01BRlUsR0FFVkE7UUFDa0M7U0FEOUJLLEdBQUpMOztTQUNrQyxpQkFBakIsY0FEakJBOztlQUFJSzs7O2dCQUlNcVksY0FBSjZIO1lBQVUsV0FBVkE7WUFBVSw4QkFBTjdIOztVQURFLE9BRk52WDtNQUZBLFVBTUs7SUExSEUscUJBNEhIdkQsRUFBRVcsRUFBRTRDO01BQ2hCLFNBRGM1QyxHQUNkLEtBRGdCNEMscUJBQ2hCOztZQUNBekg7UUFDRTtVQUFLLGtCQUhLa0UsRUFDUkcsS0FEWW9ELE1BRWhCekg7VUFDTyxTQURQQTs7O01BR0EsT0FKSXFFLElBSUY7SUFqSWEseUJBbUlDSCxFQUFFb08sSUFBSXdVO01BQ3RCLElBQUkvZSxJQURrQitlO01BQ3RCLFNBQUkvZSxJQUNZLFVBRkV1SztNQUNsQjtPQUVpQixpQkFIRHBPLEVBQUVvTyxJQUFJd1U7T0FHTDs7T0FDSSw0QkFIakIvZSxJQUVPZ2Y7T0FDVSxTQURmeFU7T0FDZSxLQUhqQnhLO09BR2lCOztZQUVuQi9IO1FBQ0U7VUFBZ0I7OEJBUEprRSxFQUtWc08sU0FMZ0JzVSxnQkFNcEI5bUI7V0FDa0I7O3FCQUFaa25CO1VBRUosaUJBSEZsbkIsS0FDWWluQjtVQUFNLFNBRGxCam5COzs7TUFLQSxVQU5Jd1MsU0FEQXdVLGFBUUg7SUEvSVksc0JBaUpGOWlCLEVBQUV1RCxFQUFFNUM7TUFDakIsU0FEaUJBLEdBQ2pCLEtBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUFFdUQsTUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7SUF0SmEsa0JBd0pOaVAsRUFBRTdMO01BQ1gsTUFEV0EsYUFFRXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpEOE8sRUFBRTdMLE1BRUV6SCxJQUVxQjtRQUMzQixRQUhNQTtpQkFJUDtJQTlKUyxtQkFnS0xzVCxFQUFFN0w7TUFDWixNQURZQSxhQUVDekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkE4TyxFQUFFN0wsTUFFQ3pILEtBRXFCLFFBRnJCQTtRQUdOLFNBQ0Q7SUF0S1Msb0JBd0tKc1QsRUFBRTFOLEdBQUdDO01BQ2hCLE9BRGFELGNBQ2IsR0FEZ0JDO01BQ2hCLEdBQUlnWixPQUNBQyxHQUNhO01BRmpCLElBR2tCOWU7TUFDaEI7V0FEZ0JBLE1BSGQ2ZSxHQUlhO1FBQ1AsY0FOQ3ZMLEVBQUUxTixPQUlLNUYsR0FKRjZGLE9BSUU3RjtVQUVtQyxRQUZuQ0E7UUFHWCxTQUNEO0lBaExTLG1CQWtMTHNULEVBQUUxTixHQUFHQztNQUNmLE9BRFlELGNBQ1osR0FEZUM7TUFDZixHQUFJZ1osT0FDQUMsR0FDYTtNQUZqQixJQUdrQjllO01BQ2hCO1dBRGdCQSxNQUhkNmUsR0FJYTtRQUNQLGNBTkF2TCxFQUFFMU4sT0FJTTVGLEdBSkg2RixPQUlHN0YsSUFFbUM7UUFDOUMsUUFIV0E7aUJBSVo7SUExTFMsZUE0TFQ2RSxFQUFFNEM7TUFDUixNQURRQSxhQUVLekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNrQixzQkFKMUJpRCxNQUVLekgsR0FGUDZFLEdBSXdDO1FBQ3ZDLFFBSE03RTtpQkFJUDtJQWxNUyxnQkFvTVI2RSxFQUFFNEM7TUFDVCxNQURTQSxhQUVJekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNELEdBSlJLLE1BQUU0QyxNQUVJekgsR0FFd0I7UUFDOUIsUUFITUE7aUJBSVA7SUExTVMsb0JBNE1Kc1QsRUFBRTdMO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFFSixJQUFKSyxFQUxLNEMsTUFFQXpIO1FBSU4sY0FOSXNULEVBS0h6TyxHQUNRLFVBRFJBO1FBQUksSUFFSCxJQUxJN0U7aUJBT1A7SUFyTlMsb0JBdU5Ka0UsRUFBRXVEO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFFTixJQUVKSCxFQUZJLFdBTENILEVBQUV1RCxNQUVBekg7UUFHSCxHQUVKcUUsRUFBZSxPQUFmQTtRQUZJLElBQ0ksSUFKRHJFO2lCQU9QO0lBaE9TLGlCQWtPUDZFO01BQ0wsY0FES0EsT0FDUztNQUNaO2FBRkdBO09BRUg7O1NBRkdBO09BS0UsaUJBREpMLEVBREEyaUI7T0FHSSxpQkFGSjNpQixFQURJbWU7T0FHQSxLQUZKbmU7T0FFSTs7WUFDUnhFO1FBQ0U7c0JBUkk2RSxNQU9ON0UsR0FDRTtVQUNBLE1BRkZBLEtBQ01xbkI7VUFFSixNQUhGcm5CLEtBQ1VvbkI7VUFBUixTQURGcG5COzs7TUFLQSxVQVBJeUgsRUFDQXpCLEVBT0g7SUEvT1ksbUJBaVBMeUIsRUFBRXpCO01BQ1osT0FEVXlCLGFBQ1YsR0FEWXpCO01BQ1osR0FBSXNoQixPQUNBQyxHQUNhO01BQTJCLFNBRnhDRCxHQUdXO01BSGYsSUFLVSxpQkFMTkEsTUFETTdmLEtBQUV6QixPQU1GLEtBTE5zaEIsV0FLTTs7WUFDUnRuQjtRQUNFO1VBQWdCLE1BRGxCQSxRQVBReUgsTUFPUnpILEdBUFVnRyxNQU9WaEc7VUFDa0IsU0FEbEJBOzs7TUFHQSxPQUpJNkUsQ0FLSDtJQTVQWTtrQkErUFJ1UCxJQUFJM007TUFDWCxTQUFJK2YsT0FBT2xoQixFQUFFdEc7UUFDWCxVQURXQSw0QkFDWCxLQUFJeW5CO1FBQUosSUFBSUEsZUFES25oQjtVQUdTLFNBRmRtaEIsWUFHaUIsc0JBTFpoZ0I7VUFLSixjQUxBMk0sSUFLSSxpQkFMQTNNLEVBRUxnZ0I7V0FHMEMsT0FIMUNBO1VBRWM7V0FFaEIsS0FKRUE7V0FJZ0Isc0JBTlhoZ0I7V0FNVyxLQUhoQjVDO1VBR0MsY0FOQXVQLElBTUksaUJBTkEzTTtXQU1vQyxPQUp6Q2dnQjtVQUtGLE9BSkU1aUI7UUFNRixJQVBFNGlCLGVBREtuaEI7VUFReUIsU0FQOUJtaEIsWUFPOEIsc0JBVHpCaGdCO1VBU1Msc0JBVGIyTSxJQVNpQixpQkFUYjNNLEVBRUxnZ0I7V0FRRyxPQVJIQTtRQVNHLEdBVEhBLE1BREtuaEIsRUFVYyxPQVRuQm1oQjtRQVM0QixnQkFWckJ6bkIsRUFVcUM7TUFWbEQsU0FZUTBuQixZQUFZcGhCLEVBQUV0RyxFQUFFa047UWhDaFQzQixJZ0NnVHlCM0c7UUFDcEI7VUFBUSxJQUFKK04sRUFBSSxPQURVaE8sRUFBRUM7VUFFakIsa0JBZkU2TixJQWVFLGlCQWZFM00sRUFjTDZNLFVBRGtCcEg7WUFHWiwwQkFoQkR6RixFQWNMNk07WUFFRixpQkFoQk83TSxFQWFXbEI7WUFHVixJQUhVQSxJQUNoQitOOztVQUlLLGlCQWxCQTdNLEVBYVdsQixnQkFBRTJHO1VBS2IsU0FFTDtNQW5CTixTQXFCSXlhLFFBQVFyaEIsRUFBRXRHLEVBQUVrTjtRQUFJO1VBQUkscUJBQVo1RyxFQUFFdEcsRUFBRWtOOzs7O1lBQTJDLElBQUwzRyxXQUFLLGlCQXRCaERrQixFQXNCMkNsQixnQkFBdEMyRyxFQUEyQztvQkFBUztNQXJCcEUsU0FzQlEwYSxXQUFXdGhCLEVBQUV0RztRaEMxVHhCLElnQzBUd0J1RztRQUNuQjtVQUFRLGVBRFNELEVBQUVDLEtBRVgsc0JBekJDa0IsRUF1QlVtYTtVQUVuQixpQkF6QlNuYSxFQXVCVWxCO1VBQ1gsSUFEV0E7bUJBR0w7TUF6QmhCLFNBMkJJc2hCLE9BQU92aEIsRUFBRXRHO1FBQUk7VUFBSSxvQkFBVnNHLEVBQUV0Rzs7O2dDQUF3QyxJQUFMdUcsV0FBSyxPQUFMQTtvQkFBTTtNQTNCdEQsTUFEV2tCLGFBQ1gsT0FzQ0luQjtNQXRDSjtZQXVDQStkO1FBQW9DO2tCQURoQy9kLEVBQ0orZCxJQUFnRCxpQkF4Q3JDNWMsRUF3Q1g0YztVQUFvQyxTQUFwQ0E7OztNQXZDQSxTQXNDSS9kO01BRUo7OztRQUNFO1VBQVE7Z0NBMUNDbUIsRUF5Q1hsQjtXQUVVLHNCQTNDQ2tCO1VBMkNULGlCQTNDU0EsRUF5Q1hsQjtVQUNVLElBRUUsV0FIWkEsT0Faa0J2RztVQUNoQjtnQkFBSStuQixRQURZL25CO1lBQ2hCLEdBRGdCQSxNQUNaK25CO1lBRUQ7OEJBaENFM1QsSUFnQ0UsaUJBaENFM00sRUE4QkxzZ0Isb0JBRGNEO2FBTVQsaUJBbkNBcmdCLEVBNkJPekgsWUFBRThuQjs7Y0FJUiwwQkFqQ0RyZ0IsRUE4QkxzZ0I7Y0FHRixpQkFqQ090Z0IsRUE2Qk96SDtjQUlkLE9BSEUrbkIsWUFEWS9uQixFQUNaK25CO2NBSXlDLGlCQWxDcEN0Z0IsVUE2QlNxZ0I7WUFDbEIsU0FXRnZoQjs7OztNQXhDQSxhQXNDSUQ7TUFPSjtRQUF1Qix1QkE5Q1ptQixRQThDaUMsc0JBOUNqQ0E7UUE4Q3lCLGlCQTlDekJBO1FBOEM0QyxpQkE5QzVDQSxVQThDUXlGO1FBQUk7OztpQkFBMEM7SUE3U2xELHFCQWlURGtILElBQUkzTTtNQUNsQixTQUFJdWdCLE1BQU1DLFFBQVFDLFFBQVFDLEtBQUtDLFFBQVFDLFFBQVFwSCxJQUFJcUg7UUFDakQ7ZUFEUUwsVUFBUUM7U0FDaEIsTUFENkJFLFVBQVFDO1NBa0JHLHNCQWxCaEJGLEtBQUtDO1NBa0JiLHNCQW5CQTNnQixFQUNSd2dCO1NBRUtVLEdBRkxWO1NBRVF2aUI7U0FBR2tqQixHQUZVUjtTQUVQemlCO1NBQUcyVyxFQUZ3QmdNO1FBRy9DO1VBQUcsa0JBSk9sVSxJQUdJMU8sR0FBTUM7WUFTbEIsaUJBWHlDc2IsSUFFcEIzRSxZQUFIM1c7WUFTbEIsSUFDSWtqQixLQVZXRDtZQVNmLEdBQ0lDLE9BWDBCTDtjQWE1QjttQkFabUJsTTtlQVlMLHNCQWRJNkwsS0FZaEJVO2VBVldELEdBVVhDO2VBVmNsakI7ZUFBRzJXOztZQWNuQixjQWpCVTdVLEVBR0hraEIsR0FGZ0MxSCxJQUVwQjNFLFVBRHJCaU0sUUFDU0k7VUFFVCxpQkFKeUMxSCxJQUVwQjNFLFlBQVQ1VztVQUVaLElBQ0lzakIsS0FIS0w7VUFFVCxHQUNJSyxPQUpKVDtZQU1FO2lCQUxtQmpNO2FBS1gsc0JBUkU3VSxFQU1SdWhCO2FBSEtMLEdBR0xLO2FBSFF0akI7YUFBUzRXOztVQU9uQixjQVRrQjZMLEtBRUxTLEdBRjBCM0gsSUFFcEIzRSxVQURTa00sUUFDZkksUUFnQitDO01BbEJwRSxTQW9CSU8sUUFBUUMsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzVCLFNBRDRCQSxZQUM1Qjs7OztVQUNFOztrQkFGUXFoQixTQUNWcHBCO2FBQ1UsbUJBdkJNeUg7YUF1Qk4sTUFGVzZnQixTQUNyQnRvQjs7aUJBRHFCc29CLFVBR2ZoVTs7Z0JBQ21CLGtCQXpCYkYsSUF5QmlCLGlCQUpaNk0sb0JBRVgvVDtrQkFHRjt3QkFGRW9IO21CQUVlLHNCQUxKMk07bUJBS0ksS0FGZjNNO2tCQUVGLGlCQUxhMk07a0JBS2I7O2NBR0YsU0FMSTNNO2NBS0osaUJBUmUyTSxzQkFFWC9UO2NBTUosU0FQRmxOOzs7O2dCQVFJO01BN0JOLFNBK0JRcXBCLE9BQU9ELE9BQU9uSSxJQUFJcUgsT0FBT3ZnQjtRQUMvQixHQUQrQkEsU0FDVCxlQURUcWhCLE9BQU9uSSxJQUFJcUgsT0FBT3ZnQjtRQUMwQixPQUQxQkEsWUFDMEIsR0FEMUJBLE1BRXpCbkM7UUFFSixPQUpXd2pCLFNBRVB4akIsT0FGY3FiLElBQUlxSCxTQUVsQjFpQixPQUNBQztRQUVKLE9BTFd1akIsT0FoQ0czaEIsRUFnQ0gyaEIsU0FHUHZqQixPQURBRDtRQUdKLGFBTFd3akIsU0FHUHZqQixPQURBRCxHQUZjcWIsSUFBSXFILFNBRWxCMWlCLE9BQ0FDLEdBSGNvYixJQUFJcUgsT0FPckI7TUF0Q0wsSUF3Q0loaUIsRUF6Q2NtQjtNQUNsQixHQXdDSW5CLE9BQ2dCLGlCQTFDRm1CLElBeUNkbkI7TUF4Q0o7T0F5Q3lDLEdBRHJDQTtPQUNxQyxHQURyQ0EsSUFFRVY7T0FFSSxpQkFESkMsR0FDWSxpQkE3Q0E0QjtNQThDaEIsT0FISTdCLEdBRUFvTCxJQURBbkw7TUFHSixTQS9DZ0I0QixFQTRDWjVCLEdBREFEO01BSUosYUFISUMsR0FEQUQsR0FFQW9MLElBREFuTCxHQTVDWTRCLElBaURmO0lBbFdZLGtCQXlXTkE7TUFDVCxTQUFRZ1ksSUFBSXpmO1FBQ1YsR0FEVUEsSUFESHlIO1VBSUcsTUFKSEEsTUFDR3pILEdBR0EsS0FIQUE7VUFJSyxVQURUNkUsaUJoQ2paWCxPZ0M4WVc0YTtRQUtELFFBQU87TUFMZDs0QmhDOVlILE9nQzhZV0EsZUFPSDtJQWpYVSxtQkFtWExoWTtNQUNWLFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURGeUg7VUFJRSxNQUpGQSxNQUNFekgsR0FHQSxLQUhBQTtVQUlTLGFBSlRBLEVBR0o2RSxrQmhDM1pYLE9nQ3daVzRhO1FBS0QsUUFBTztNQUxkOzRCaEN4WkgsT2dDd1pXQSxlQU9IO0lBM1hVLGtCQXdZTjRFO01BQ1QsV0FBUSxxQkFBbUIvUixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQURqQytSO01BWE8sR0FFZC9kO1FBQ1k7U0FEUkssR0FBSkw7O1NBQ1ksa0JBRFpBO1NBRVUsaUJBREp5QixJQURObkI7U0FFVSxJQURKbUI7O2VBREZwQjs7O2dCQUtNcVksY0FBSjZIO1lBQVUsV0FBVkE7WUFBVSw4QkFBTjdIOztVQURFLE9BRk52WDtNQUhBLFVBWUs7SUExWUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UXBCUmI2aEIsVUFDQUMsU0FDQUM7YUFJQUMsVUFBVzVrQixHQUFZLE9BQVpBLGVBQXVCO2FBQ2xDNmtCLFlBQWE3a0IsR0FBWSxZQUFaQSxXQUF3QjthQUNyQzhrQixPQUFROWtCLEdBQVksT0FBWkEsVUFBa0I7UUFFMUIra0I7YUF5RUFDLFdBQVdobEI7TUFBUSxTQUFSQSxLQUFRLHlCQUFSQTtNQUFRLFlBN0VuQjRrQixVQTZFVzVrQixPQUE4QjthQUt6Q2lsQixPQUFLamxCLEdBQUksNEJBQUpBLEVBckZMSyxTQXFGOEI7YUFDOUI2a0IsT0FBS2xsQixHQUFJLDRCQUFKQSxFQXJGTE0sYUFxRmtDO2FBY2xDNmtCLFNBQU1ubEIsRUFBRUMsR0FBSSxnQ0FBTkQsRUFBRUMsTUFBbUI7YUFFbEJtbEIsTUFBS3BsQixFQUFXQztNQUMzQixNQURnQkQsSUFBV0M7O1FBQ0ssR0FBaEIsbUJBRFdBLFFBQ0ssbUJBRGhCRDtRSjJZVixZSXhZRSxPQUhRQSxTQUFXQztNQUV0QixPQUZzQkEsU0FBWEQsQ0FHYzthQUVuQnFsQixNQUFLcmxCLEVBQVdDO01BQzNCLE1BRGdCRCxJQUFXQzs7UUFDSyxHQUFoQixtQkFEV0EsUUFDSyxtQkFEaEJEO1FKc1lWLFlJbllFLE9BSG1CQyxTQUFYRDtNQUVYLE9BRldBLFNBQVdDLENBR0c7YUFFbkJxbEIsUUFBU3RsQixFQUFXQztNQUNoQixHQURLRCxVQUFXQztRQUUxQixNQUZlRCxJQUFXQzs7VUFFTSxHQUFoQixtQkFGVUEsUUFFTSxtQkFGakJEO1VKaVlkLFlJL1g0RCxVQUZuQ0MsRUFBWEQ7UUFFa0MsVUFGbENBLEVBQVdDO01BQ0YsVUEvRzNCTSxRQWdIc0U7YUFFN0RnbEIsUUFBU3ZsQixFQUFXQztNQUMvQixNQURvQkQsSUFBV0M7O1FBQ0MsR0FBaEIsbUJBRGVBLFFBQ0MsbUJBRFpEO1FKNlhkLFlJMVhFLE9BSHVCQyxPQUFYRCxFQUFXQztNQUUxQixPQUZlRCxPQUFXQyxFQUFYRCxDQUdVO2FBRW5Cd2xCLFFBQVN4bEIsRUFBV0M7TUFDL0IsTUFEb0JELElBQVdDOztRQUNDLEdBQWhCLG1CQURlQSxRQUNDLG1CQURaRDtRSndYZCxZSXJYRSxPQUhZQSxPQUFXQyxFQUFYRDtNQUVmLE9BRjBCQyxPQUFYRCxFQUFXQyxDQUdEO2FBRW5Cd2xCLFlBQWF6bEIsRUFBV0M7TUFDaEMsR0FEcUJELE9BQ1AsVUFEa0JDO01BRTNCLEdBRjJCQSxPQUViLFVBRkVEO01BR25CLE1BSG1CQSxJQUFXQzs7UUFHRSxHQUFoQixtQkFIY0EsUUFHRSxtQkFIYkQ7UUptWGxCLFlJaFgyRCxVQUg5QkMsRUFBWEQ7TUFHOEIsVUFIOUJBLEVBQVdDLEVBR21DO2FBSXBFeWxCLE9BQUsxbEIsR0FBSSwwQkFBSkEsRUFBZ0M7YUFhbkMybEIsWUFBWS9pQixFQUFFSyxJQUFJQyxJQUFJM0Q7TUFDeEIsVUFEZ0IwRCxNQUFJQztNQUNwQixhQURnQkQ7WUFDaEI5SCxFQURnQjhIO1FBQ2dCO2dCQUFoQzlILEtBRHdCb0U7VUFDUSxTQUFoQ3BFOzs7TUFkUyxRQWM0QzthQUtuRHlxQixNQUFNaGpCLEVBQUVLLElBQUlDLElBQUlnSTtNQUNsQixTQURVakk7TUFDVjs7O2lCQURjQzs7Ozs7Z0JBQUpELE1BQUlDO3dCQUFOTixnQkFBRUssTUFBSUM7TUFFWix3QkFGZ0JnSSxTQUVEO2FBRWYyYSxPQUFLbG1CLEVBQUVKO01BQ0ksSUFBVHdNLE9BQVMsdUJBRE5wTTtNQUVQLFlBRElvTSxTQURHcE0sRUFBRUo7TUFFVCxPQURJd00sTUFFRTthQUVKK1osT0FBS3JrQixFQUFFcEM7TUFDVCxRQURPb0M7UUFHSywrQkFITEEsR0FHSyxLQUhMQSxVQUdLOztjQUNWdEc7VUFDRTtvQkFERkEsS0FDbUIsV0FMWmtFLEVBSVBsRTtZQUNFLFNBREZBOzs7UUFHQSxPQUpJdUo7TUFGUSx3Q0FNVDthQUVIcWhCLFNBQU8vTSxHQUFHRDtNQUNaO1VBRFNDO09BQ1QsR0FEWUQ7T0FHQyw4QkFGVGhZLEtBQ0FDO01BRUoscUJBSlNnWSxLQUdMak4sU0FGQWhMO01BSUoscUJBTFlnWSxLQUdSaE4sT0FGQWhMLEdBQ0FDO01BR0osT0FGSStLLE1BR0U7YUFVSmlhLFNBQU92a0I7Ozs7VUFOVDtXQUlRSztXQUFOQztXQUxXL0IsRUFLWCtCO1dBSkYsYUFEYS9CLElBQ1M7O2lCQUlkOEI7O1FBSVIsdUNBQ2FzVyxJQUhKM1csRUFHTXRHO1FBQ2I7YUFEV2lkO2dCQUdIK0IsS0FIRy9CLE9BR1Q0SixLQUhTNUosT0FJTDZOLEtBREpqRTtZQUVBLHFCQUZBQSxPQUpBalcsT0FDVzVRLEVBSVA4cUI7WUFDSixRQUxXOXFCLElBSVA4cUIsU0FKSzdOLElBR0grQixLQUhLaGY7O1VBRUwsR0FGS0EsaUJBRFg0UTt3Q0FVRTthQUVKbWEsTUFBSXRqQixFQUFFSyxJQUFJQztNQUNaLE1BRE1OLEVBQUVLLElBQUlDO01BRUMsSUFBVDZJLE9BQVMsdUJBRkQ3STtNQUdaLHFCQUhNTixFQUFFSyxJQUVKOEksU0FGUTdJO01BR1osT0FESTZJLE1BRUU7YUFFSm9hLE9BQUt2akI7TUFDUCxNQURPQSxhQUVQLDhCQURJbkI7TUFFSixxQkFIT21CLElBRUhtSixTQURBdEs7TUFFSixPQURJc0ssTUFFRTthQUVKcWEsT0FBS3hqQixFQUFFSyxJQUFJQyxJQUFJM0Q7TUFDakIsTUFET3FELEVBQUVLLElBQUlDLDBCQUNiLG1CQURPTixFQUFFSyxJQUFJQyxJQUFJM0QsRUFFTTthQUVyQjhtQixPQUFLQyxJQUFJQyxLQUFLbkssSUFBSW9LLEtBQUt0akI7TUFDekIsTUFET29qQixJQUFJQyxLQUFjcmpCO01BRXpCLE1BRmdCa1osSUFBSW9LLEtBQUt0akI7TUFHekIsNEJBSE9vakIsSUFBSUMsS0FBS25LLElBQUlvSyxLQUFLdGpCLElBR1E7YUFFL0J1akIsVUFBUTdqQjtNQUNZLGNBRFpBLDRCWjVQZixPWTRQZUEsYUFDeUI7YUFFakM4akIsVUFFYWpsQjtNQURvQixrQ0FBZixTQUNMQSxJQUFGdEcsSUFBRWlkO01BQ2I7V0FEYUE7Y0FHTmpNLEVBSE1pTSxPQUdYdU8sRUFIV3ZPO1VBR0QsV0FIRGpkLEtBR1R3ckI7VUFBVSxRQUhEeHJCLGdCQUFFaWQsSUFHTmpNOztRQURDLE9BSE5KLE9BTUk7YUFHTjZhLE9BQUt2bkIsRUFBRXVEO01BQ1QsU0FEU0EscUJBQ1Q7OztRQUE2QjtxQkFEdEJ2RCxFQUFFdUQsTUFDVHpIO1VBQTZCLFNBQTdCQTs7O2NBQW9EO2FBR2xEMHJCLFFBQU14bkIsRUFBRXVELEVBQUV6QjtNQUNaLEdBRFV5QixpQkFBRXpCO09BRVY7TUFFQSxTQUpReUIscUJBSVI7OztRQUE2QjtxQkFKdkJ2RCxFQUFFdUQsTUFJUnpILEdBSlVnRyxNQUlWaEc7VUFBNkIsU0FBN0JBOzs7Y0FBcUU7YUFFckUyckIsTUFBSXpuQixFQUFFdUQ7TUFDUixNQURRQSxhQUVSLHlCQURJbkIsR0FDSixLQURJQSxVQUNKOztZQUNBdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FKWGtFLEVBQUV1RCxNQUdSekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7YUFFQ3VuQixPQUFLMW5CLEVBQUV1RCxFQUFFekI7TUFDWCxPQURTeUIsYUFDVCxHQURXekI7TUFDWCxHQUFJd2dCLE9BQ0FDLEdBRUY7TUFIRixJQUtVLHlCQUxORCxJQUtNLEtBTE5BLFdBS007O1lBQ1J4bUI7UUFDRTtnQkFERkEsS0FDaUIsV0FSWmtFLEVBQUV1RCxNQU9QekgsR0FQU2dHLE1BT1RoRztVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FLSDthQUdEd25CLFFBQU0zbkIsRUFBRXVEO01BQ1YsU0FEVUEscUJBQ1Y7OztRQUE2QjtxQkFEckJ2RCxFQUNSbEUsRUFEVXlILE1BQ1Z6SDtVQUE2QixTQUE3QkE7OztjQUFzRDthQUVwRDhyQixPQUFLNW5CLEVBQUV1RDtNQUNULE1BRFNBLGFBRVQseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpWa0UsRUFHUGxFLEVBSFN5SCxNQUdUekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7YUFHQzBuQixZQUFVN25CLEVBQUVXLEVBQUU0QztNQUNoQixTQURjNUMsR0FDZCxLQURnQjRDLHFCQUNoQjs7WUFDQXpIO1FBQ0U7VUFBSyxrQkFIS2tFLEVBQ1JHLEtBRFlvRCxNQUVoQnpIO1VBQ08sU0FEUEE7OztNQUdBLE9BSklxRSxJQUlGO2FBR0EybkIsYUFBVzluQixFQUFFdUQsRUFBRTVDO01BQ2pCLFNBRGlCQSxHQUNqQixLQURlNEM7TUFDZjtZQUNBekg7UUFDRTtVQUFLLGtCQUhNa0UsRUFBRXVELE1BRWZ6SCxHQURJcUU7VUFFRyxTQURQckU7OztNQUdBLE9BSklxRSxJQUlGO2FBR0E0bkIsU0FBTzNZLEVBQUU3TDtNQUNYLE1BRFdBLGFBRUV6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKRDhPLEVBQUU3TCxNQUVFekgsSUFFcUI7UUFDM0IsUUFITUE7aUJBSVA7YUFHSmtzQixVQUFRNVksRUFBRTdMO01BQ1osTUFEWUEsYUFFQ3pIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpBOE8sRUFBRTdMLE1BRUN6SCxLQUVxQixRQUZyQkE7UUFHTixTQUNEO2FBR0ptc0IsTUFBSXRuQixFQUFFNEM7TUFDUixNQURRQSxhQUVLekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNFLDRCQUpWaUQsTUFFS3pILEdBRlA2RSxHQUl3QztRQUN2QyxRQUhNN0U7aUJBS1A7YUFHSm9zQixTQUFTdm5CLEVBQUU0QztNQUNiLE1BRGFBLGFBRUF6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ0YsR0FKSEssS0FBRTRDLE1BRUF6SCxHQUV1QjtRQUM3QixRQUhNQTtpQkFLUDs7YUFJSnFzQixPQUFLalksSUFBSTNNO01BQ1gsU0FBSStmLE9BQU9saEIsRUFBRXRHO1FBQ1gsVUFEV0EsNEJBQ1gsS0FBSXluQjtRQUFKLElBQUlBLGVBREtuaEI7VUFJSjs7Y0FMQThOLElBS0ksZUFMQTNNLEVBRUxnZ0IsS0FHaUIsZUFMWmhnQixFQUVMZ2dCOzs7V0FHMEMsT0FIMUNBO1VBSUM7O2NBTkFyVCxJQU1JLGVBTkEzTSxFQUdMNUMsTUFHZ0IsZUFOWDRDLEVBRUxnZ0I7OztXQUl5QyxPQUp6Q0E7VUFLRixPQUpFNWlCO1FBTWM7V0FQZDRpQjs7VUFES25oQjs7Ozs7V0FRUyxXQVRiOE4sSUFTaUIsZUFUYjNNLEVBRUxnZ0IsS0FPOEIsZUFUekJoZ0IsRUFFTGdnQjtTQVFHLE9BUkhBO1FBU0csR0FUSEEsTUFES25oQixFQVVjLE9BVG5CbWhCO1FBUzRCLGtCQVZyQnpuQixFQVVxQztNQVZsRCxTQVlRMG5CLFlBQVlwaEIsRUFBRXRHLEVBQUVrTjtRWnpYN0IsSVl5WDJCM0c7UUFDcEI7VUFBUSxJQUFKK04sRUFBSSxPQURVaE8sRUFBRUM7VUFFakIsa0JBZkU2TixJQWVFLGVBZkUzTSxFQWNMNk0sR0FEa0JwSDtZQUdwQixlQWhCT3pGLEVBYVdsQixJQUdWLGVBaEJEa0IsRUFjTDZNLFFBRGdCL04sSUFDaEIrTjtVQUlLLHNCQWxCQTdNLEVBYVdsQixJQUFFMkcsR0FPbEI7TUFuQk4sU0FxQkl5YSxRQUFRcmhCLEVBQUV0RyxFQUFFa047UUFBSTtVQUFJLHFCQUFaNUcsRUFBRXRHLEVBQUVrTjs7OztZQUEyQyxJQUFMM0csV0FBSyxzQkF0QmhEa0IsRUFzQjJDbEIsSUFBdEMyRztvQkFBb0Q7TUFyQnBFLFNBc0JRMGEsV0FBV3RoQixFQUFFdEc7UVpuWTFCLElZbVkwQnVHO1FBQ25CO1VBQVEsSUFEV3FiLElBQ1gsT0FEU3RiLEVBQUVDO1VBRW5CLGVBekJTa0IsRUF1QlVsQixJQUVYLGVBekJDa0IsRUF1QlVtYTtVQUNYLElBRFdyYjttQkFHTDtNQXpCaEIsU0EyQklzaEIsT0FBT3ZoQixFQUFFdEc7UUFBSTtVQUFJLG9CQUFWc0csRUFBRXRHOzs7a0NBQXdDLElBQUx1RyxXQUFLLE9BQUxBO29CQUFNO01BM0J0RCxNQURXa0IsYUFDWCxPQXNDSW5CO01BdENKO1lBdUNBK2Q7UUFBb0M7a0JBRGhDL2QsRUFDSitkLElBQWdELGVBeENyQzVjLEVBd0NYNGM7VUFBb0MsU0FBcENBOzs7TUF2Q0EsU0FzQ0kvZDtNQUVKOzs7UUFDRTtVQUFRLElBYlV3aEIsSUFhVixlQTFDQ3JnQixFQXlDWGxCO1VBRUUsZUEzQ1NrQixFQXlDWGxCLElBRVUsZUEzQ0NrQjtVQTBDRCxJQUVFLFdBSFpsQixPQVprQnZHO1VBQ2hCO2dCQUFJK25CLFFBRFkvbkI7WUFDaEIsR0FEZ0JBLE1BQ1orbkI7WUFFRCxtQkFoQ0UzVCxJQWdDRSxlQWhDRTNNLEVBOEJMc2dCLFFBRGNEO2FBTVQsZUFuQ0FyZ0IsRUE2Qk96SCxFQUFFOG5COztjQUloQixlQWpDT3JnQixFQTZCT3pILEVBSU4sZUFqQ0R5SCxFQThCTHNnQjtjQUdGLE9BSEVBLFlBRFkvbkIsRUFDWituQjtjQUl5QyxlQWxDcEN0Z0IsSUE2QlNxZ0I7WUFDbEIsU0FXRnZoQjs7OztNQXhDQSxhQXNDSUQ7TUFPSjtRQUF1QixJQUFKNEcsRUFBSSxlQTlDWnpGO1FBOEN5QixlQTlDekJBLElBOENpQyxlQTlDakNBO1FBOENZLFNBQWdDLGVBOUM1Q0EsSUE4Q1F5Rjs7O01BdERqQixXQXNEK0Q7YUFJL0RvZixZQUFZbFksSUFBSTNNO01BQ2xCLFNBQUl1Z0IsTUFBTUMsUUFBUUMsUUFBUUMsS0FBS0MsUUFBUUMsUUFBUXBILElBQUlxSDtRQUNqRDtlQURRTCxVQUFRQztTQUNoQixNQUQ2QkUsVUFBUUM7U0FrQkcsb0JBbEJoQkYsS0FBS0M7U0FrQmIsb0JBbkJBM2dCLEVBQ1J3Z0I7U0FFS1UsR0FGTFY7U0FFUXZpQjtTQUFHa2pCLEdBRlVSO1NBRVB6aUI7U0FBRzJXLEVBRndCZ007UUFHL0M7VUFBRyxrQkFKT2xVLElBR0kxTyxHQUFNQztZQVNsQixlQVh5Q3NiLElBRXBCM0UsRUFBSDNXO1lBU2xCLElBQ0lrakIsS0FWV0Q7WUFTZixHQUNJQyxPQVgwQkw7Y0FhNUI7bUJBWm1CbE07ZUFZTCxvQkFkSTZMLEtBWWhCVTtlQVZXRCxHQVVYQztlQVZjbGpCO2VBQUcyVzs7WUFjbkIsY0FqQlU3VSxFQUdIa2hCLEdBRmdDMUgsSUFFcEIzRSxVQURyQmlNLFFBQ1NJO1VBRVQsZUFKeUMxSCxJQUVwQjNFLEVBQVQ1VztVQUVaLElBQ0lzakIsS0FIS0w7VUFFVCxHQUNJSyxPQUpKVDtZQU1FO2lCQUxtQmpNO2FBS1gsb0JBUkU3VSxFQU1SdWhCO2FBSEtMLEdBR0xLO2FBSFF0akI7YUFBUzRXOztVQU9uQixjQVRrQjZMLEtBRUxTLEdBRjBCM0gsSUFFcEIzRSxVQURTa00sUUFDZkksUUFnQitDO01BbEJwRSxTQW9CSU8sUUFBUUMsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzVCLFNBRDRCQSxZQUM1Qjs7OztVQUNFO1lBQVE7OEJBdkJNTixFQXFCTjJoQixTQUNWcHBCO2FBQ1UsTUFGV3NvQixTQUNyQnRvQjs7Y0FHeUI7Z0JBSkpzb0I7O2dCQUdmaFU7Ozs7Z0JBQ21CLFdBekJiRixJQXlCaUIsZUFKWjZNLElBR1gzTSxNQURBcEg7Z0JBR0YsZUFMYStULElBR1gzTSxhQUVlLGVBTEoyTSxJQUdYM007Z0JBRUY7O2NBR0YsZUFSZTJNLElBR1gzTSxhQURBcEg7Y0FNSixTQVBGbE47Ozs7Z0JBUUk7TUE3Qk4sU0ErQlFxcEIsT0FBT0QsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQy9CLEdBRCtCQSxTQUNULGVBRFRxaEIsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzBCLE9BRDFCQSxZQUMwQixHQUQxQkEsTUFFekJuQztRQUVKLE9BSld3akIsU0FFUHhqQixPQUZjcWIsSUFBSXFILFNBRWxCMWlCLE9BQ0FDO1FBRUosT0FMV3VqQixPQWhDRzNoQixFQWdDSDJoQixTQUdQdmpCLE9BREFEO1FBR0osYUFMV3dqQixTQUdQdmpCLE9BREFELEdBRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUMsR0FIY29iLElBQUlxSCxPQU9yQjtNQXRDTCxJQXdDSWhpQixFQXpDY21CO01BQ2xCLEdBd0NJbkIsT0FDZ0IsaUJBMUNGbUIsSUF5Q2RuQjtNQXhDSixJQXlDeUMsR0FEckNBLFVBQ3FDLEdBRHJDQSxJQUVFVixPQUVKLHlCQURJQztNQUVKLE9BSElELEdBRUFvTCxJQURBbkw7TUFHSixTQS9DZ0I0QixFQTRDWjVCLEdBREFEO01BSUosYUFISUMsR0FEQUQsR0FFQW9MLElBREFuTCxHQTVDWTRCLElBaURmO2FBS0Q4a0IsU0FBTzlrQjtNQUNULFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURIeUg7VUFJRyxNQUpIQSxNQUNHekgsR0FHQSxLQUhBQTtVQUlLLFVBRFQ2RSxpQlp4ZGIsT1lxZGE0YTtRQUtELFFBQU87TUFMZDs0QlpyZEwsT1lxZGFBLGVBT0g7YUFHSCtNLFVBQVEva0I7TUFDVixTQUFRZ1ksSUFBSXpmO1FBQ1YsR0FEVUEsSUFERnlIO1VBSUUsTUFKRkEsTUFDRXpILEdBR0EsS0FIQUE7VUFJUyxhQUpUQSxFQUdKNkUsa0JabmViLE9ZZ2VhNGE7UUFLRCxRQUFPO01BTGQ7NEJaaGVMLE9ZZ2VhQSxlQU9IO2FBYUhnTixTQUFPcEk7TUFDVDs7T0FBUSwyQkFBbUIvUixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQURqQytSO09BVEMsYUFESXZIO09BRWQseUJBREkvVTtPQUNKLElBRElBOzthQURVK1U7OztjQUtOblcsWUFBSkM7VUFBVSxXQUFWQTtVQUFVLDhCQUFORDs7UUFERSxPQUZOYyxFQVVTO2FBR1hpbEIsYUFBYXhvQixFQUFFdUQ7TUFDakIsSUFBSW5CLEVBRGFtQjtNQUNqQixTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRW1CLFdBSFJwQyxFQUFFdUQsT0FHUCxLQUZObkIsVUFFTTs7WUFDUnRHO1FBQ0U7Z0JBREZBLEtBQ3VCLFdBTFZrRSxFQUFFdUQsTUFJZnpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO2FBRURzb0IsZUFBZXpvQixFQUFFdUQ7TUFDbkIsTUFEbUJBLGFBRW5CLHlCQURJbkIsR0FDSixLQURJQSxVQUNKOztZQUNBdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FKQWtFLEVBQUV1RCxNQUduQnpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUlIOzs7Ozs7O3NCWnpnQk47OztPWTJMT3FtQjs7T0FLQUM7T0FTQUM7T0FnQkFDO09BY0FFO09BTUFDO09BTUFDO09BSUFDO09BS0FJO09BR0FDO09BVUFFO09BZ0NBSTtPQXRCQUY7T0F5QkFHO09BU0FDO09BUUFDO09BaERBTjtPQWNBRTtPQW1EQU07T0FUQUQ7T0FrQkFFO09BVUFDO09BV0FDO09Ba0RBQzs7T0FzREFDO09BV0FDO09BcUJBQztPQUtBQztPQVVBQzs7Ozs7O09BdmVGckQ7T0FDQUM7T0FDQUM7T0FzRkFNO09BQ0FDO09BdEZBN2tCO09BQ0FDO09BQ0FDO09BS0F3a0I7T0FDQXZrQjtPQUNBQztPQUNBQztPQVBBa2tCO09BQ0FDO09BQ0FDO09BMkVBRTtPQWxFQXBqQjtPQUNBRDs7T0FxRkF3akI7T0FFU0M7T0FLQUM7T0FLQUM7T0FJQUM7T0FLQUM7T0FLQUM7T0FPVEM7O3VCWnBLTDs7O1FZMkxPRzs7UUFLQUM7UUFTQUM7UUFnQkFDO1FBY0FFO1FBTUFDO1FBTUFDO1FBSUFDO1FBS0FJO1FBR0FDO1FBVUFFO1FBZ0NBSTtRQXRCQUY7UUF5QkFHO1FBU0FDO1FBUUFDO1FBaERBTjtRQWNBRTtRQW1EQU07UUFUQUQ7UUFrQkFFO1FBVUFDO1FBV0FDO1FBa0RBQzs7UUFzREFDO1FBV0FDO1FBcUJBQztRQUtBQztRQVVBQzs7O1FxQnRkRkMsU0FDQUMsUUFDQUM7YUFDQUMsT0FBS3ZvQixHQUFJLE9BQUpBLFNBQVk7YUFDakJ3b0IsT0FBS3hvQixHQUFJLE9BQUpBLFNBQVk7YUFDakJ5b0IsTUFBSXpvQixHQUFPLHlCQUFQQSxjQUFnQztRQUNwQzBvQixzQkFDQUM7YUFDQUMsU0FBTzVvQixHQUFJLE9BQUpBLE1BQWtCO0lBS1QsU0FIaEI2b0IsZ0JBSU03b0I7TUFDd0I7O2FBQXZCLG1CQUREQTs7O2FBQ3dCLGlCQUR4QkE7T0FFQSxVQUZBQTtNQUlBLFFBQUk7YUFTVjhvQixZQUFVOW9CLEdBQUksNkJBQUpBLEVBQWlCO2FBSTNCK29CLGdCQUFjN29CO01BRWhCO1FBQVMsK0JBRk9BOzs7K0JBR0U7UUFQRixXQU9NO2FBSXBCOG9CLFdBQVMzb0IsRUFBT0MsR0FBUSx3QkFBZkQsRUFBT0MsRUFBMEI7YUFDMUMyb0IsU0FBTzVvQixFQUFPQyxHQUFRLDhCQUFmRCxFQUFPQyxNQUF1QjthQUVyQzRvQixpQkFBaUJscEIsRUFBRW1wQjtNQUNiLHdCQURXbnBCLG1CQUFFbXBCLG1CQUNrQjthQUVyQ0MsTUFBSS9vQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjthQUNyQytvQixNQUFJaHBCLEVBQUVDLEdBQVcseUJBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO2FBS3JDZ3BCLGFBQWF0cEIsRUFBRThYO01BQ2QsaUJBRGNBLEtBRVosNkJBRlU5WCxFQUFFOFgsR0FqRGZ1USxNQURBRDtNQXNEb0QsTUFBSCxTQUpwQ3BvQixZQUFFOFgsUUFLUCxFQUxLOVgsSUFLQyxTQURWdXBCLEVBSld6UjtNQU1aLDZCQURDalksRUFMV2lZLEdBSVh5UixXQUUyQzthQUUvQ0MsYUFBYXhwQixFQUFFOFgsR0FDakIsT0FEZTlYLElBQ2MsU0FBbEIsYUFESUEsRUFBRThYLFNBQ2U7Ozs7T0EzRDlCc1E7T0FDQUM7T0FDQUM7T0FnREFnQjtPQVFBRTtPQXZEQWpCO09BQ0FDO09BQ0FDO09BRUFFO09BREFEO09BRUFFO09BRUFDO09BcUJBRTtPQUpBRDtPQVdBRTtPQUdBRTtPQUZBRDtPQUtBRztPQUNBQzs7YS9CNUNBSSxPQUFLenBCLEdBQUksc0JBQUpBLE1BQVk7YUFDakIwcEIsT0FBSzFwQixHQUFJLHNCQUFKQSxNQUFZO2FBQ2pCMnBCLE1BQUkzcEI7TUFBTyx5QkFBUEEsU0FBMkIsdUJBQTNCQSxFQUFnQzthQUdwQzRwQixTQUFPNXBCLEdBQUksOEJBQUpBLE1BQWtCO0lBR2IsSUFBVjZwQixVQUFVO2FBRFpDLGtCQUVFOXBCO01BQ3dCOzthQUF2QixtQkFiSGpHLE9BWUVpRzs7O2FBQ3dCLG1CQUR4QkEsRUFEQTZwQjtPQUdBLHNDQUZBN3BCO01BSUEsUUFBSTtJQUxNLFNBUVorcEIsWUFBVS9wQixHQUFJLGlDQUFKQSxFQUFpQjtJQVJmLFNBWVpncUIsZ0JBQWM5cEI7TUFFaEI7UUFBUyxpQ0FGT0E7OzsrQkFHRTtRQVBGLFdBT007SUFmUixTQTRCWitwQixXQUFTNXBCLEVBQU9DLEdBQVEsMEJBQWZELEVBQU9DLEVBQTBCO0lBNUI5QixTQTZCWjRwQixTQUFPN3BCLEVBQU9DLEdBQVEsZ0NBQWZELEVBQU9DLE1BQXVCO0lBN0J6QixTQStCWjZwQixtQkFBaUJucUIsRUFBRW1wQjtNQUNiOzhCQURXbnBCLEVBcENqQjlGLFdBcUNzQixlQURIaXZCLEVBcENuQmp2QixXQXFDcUM7SUFoQ3pCLFNBa0Naa3dCLE1BQUkvcEIsRUFBRUMsR0FBVyxzQkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7SUFsQ3pCLFNBbUNaK3BCLE1BQUlocUIsRUFBRUMsR0FBVyx5QkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7SUFuQ3pCLFNBd0NaZ3FCLGVBQWF0cUIsRUFBRThYO01BQ2QsaUJBRGNBLEVBbkRmL2Q7T0FxREcsK0JBRlVpRyxFQUFFOFgsR0FsRGY5ZCxNQURBRDtNQXVEb0Q7OztVQUFILHVCQUF6QiwrQkFKWGlHLEtBQUU4WDtPQUtQLGlCQUxLOVgsRUFLQyxlQURWdXBCLEVBSld6UjtNQU1aLCtCQURDalksRUFMV2lZLEdBTW1CLE9BRjlCeVIsSUFFMkM7SUE5Q25DLFNBZ0RaZ0IsZUFBYXZxQixFQUFFOFg7TUFDakIsc0JBRGU5WCxFQUNjLGVBQWxCLGVBRElBLEVBQUU4WCxNQUNlO0lBakRsQjs7O09BWFovZDtPQUNBQztPQUNBQztPQWlEQXF3QjtPQVFBQztPQXhEQWQ7T0FDQUM7T0FDQUM7T0FFQXh2QjtPQURBRDtPQUVBMHZCO09BRUFFO09BYUFFO09BSkFEO09Bb0JBRTtPQUdBRTtPQUZBRDtPQUtBRTtPQUNBQztJQW5DWTtRZ0JiWkcsU0FDQUMsUUFDQUM7YUFDQUMsT0FBSzNxQixHQUFJLE9BQUpBLFNBQVk7YUFDakI0cUIsT0FBSzVxQixHQUFJLE9BQUpBLFNBQVk7YUFDakI2cUIsTUFBSTdxQixHQUFPLHlCQUFQQSxjQUFnQztJQUUxQiwwQkFDQTthQUNWZ3JCLFNBQU9ockIsR0FBSSxPQUFKQSxNQUFrQjtJQUdiLFNBRFppckIsa0JBRUVqckI7TUFDd0I7O2FBQXZCLG1CQUREQTs7O2FBQ3dCLGlCQUR4QkE7T0FFQSxVQUZBQTtNQUlBLFFBQUk7SUFMTSxTQVFaa3JCLFlBQVVsckIsR0FBSSwrQkFBSkEsRUFBaUI7SUFSZixTQVlabXJCLGdCQUFjanJCO01BRWhCO1FBQVMsK0JBRk9BOzs7K0JBR0U7UUFQRixXQU9NO0lBZlIsU0FtQlprckIsV0FBUy9xQixFQUFPQyxHQUFRLHdCQUFmRCxFQUFPQyxFQUEwQjtJQW5COUIsU0FvQlorcUIsU0FBT2hyQixFQUFPQyxHQUFRLDhCQUFmRCxFQUFPQyxNQUF1QjtJQXBCekIsU0FzQlpnckIsbUJBQWlCdHJCLEVBQUVtcEI7TUFDYix3QkFEV25wQixtQkFBRW1wQixtQkFDa0I7SUF2QnpCLFNBeUJab0MsTUFBSWxyQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQXpCekIsU0EwQlprckIsTUFBSW5yQixFQUFFQyxHQUFXLHlCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQTFCekIsU0ErQlptckIsZUFBYXpyQixFQUFFOFg7TUFDZCxpQkFEY0EsS0FFWiwrQkFGVTlYLEVBQUU4WCxHQTFDZjJTLE1BREFEO01BK0NvRCxNQUFILFNBSnBDeHFCLFlBQUU4WCxRQUtQLEVBTEs5WCxJQUtDLFNBRFZ1cEIsRUFKV3pSO01BTVosK0JBRENqWSxFQUxXaVksR0FJWHlSLFdBRTJDO0lBckNuQyxTQXVDWm1DLGVBQWExckIsRUFBRThYO01BQ2pCLE9BRGU5WCxJQUNjLFNBQWxCLGVBRElBLEVBQUU4WCxTQUNlO0lBeENsQjs7O09BWlowUztPQUNBQztPQUNBQztPQXlDQWU7T0FRQUM7T0FoREFmO09BQ0FDO09BQ0FDO09BQ0F4aEI7T0FFQTBoQjtPQURBRDtPQUVBRTtPQUVBQztPQWFBRTtPQUpBRDtPQVdBRTtPQUdBRTtPQUZBRDtPQUtBRTtPQUNBQztJQTFCWTthZldaRyxPQUFPQyxJQUFJQyxNQUFNbG5CO01BQ047c0NBREppbkIsSUFBSUMsTUFBTWxuQjtPQUNOLFVBQVR5SDtPQUFTLFVBRE16SCxZQXZDakJ2SztNQXlDaUQ7a0JBRmhDdUs7UUFFZ0MsU0FGaENBO1FBRWdDLHFDQUZoQ0E7TUFPbkIsT0FOSXlILE1BTUU7YUFHSjBmLFdBQVdGLElBQUlDLE1BQU1sbkI7TUFDVjswQ0FEQWluQixJQUFJQyxNQUFNbG5CO09BQ1YsVUFBVHlIO09BQVMsVUFEVXpILFlBakRyQnZLO01BbURpRDtrQkFGNUJ1SztRQUU0QixTQUY1QkE7UUFFNEIscUNBRjVCQTtNQU92QixPQU5JeUgsTUFNRTthQWtFSjJmLGNBQWdCQyxJQUF1QnRzQjtNQUN6QyxHQURrQnNzQixJQUFpQixRQUFqQkEsc0JBQWlCQyxhQUFqQkM7TUFDbEI7WUFEa0JBLGVBUGhCN3hCLFNBbkhBRDtPQXFJcUMsS0FYckI4eEIsZUFQaEI3eEIsU0FuSEFEO09BMkgyQjtPQVFqQjs7Ozs7Ozs7T0FQRztNQURDO3VCQWpFaUJneUI7Z0JBRS9COzs2QkE4RHVDMXNCLEVBaEVuQnlzQixXQUN0QixxQkFEc0JBO2lCQUVwQixNQURFRSxXQUQ2QkQ7Z0JBYWpDLHdCQWJpQ0EsMEJBRzdCcHNCO2tCQVUrRDtzQkFibENvc0IsNkJBRzdCcHNCOztvQkFVK0QscUJBYmxDb3NCO21CQWlCMUI7cUJBakIwQkE7O29CQTRCM0I7cUJBREVFO3NCQUNGOzRCQUxLLHFCQXZCc0JGO29CQTRCM0IsR0FERUUsV0EzQnlCRiw2QkFHN0Jwc0I7cUJBMkJLO29CQUZILElBR0V1c0IsT0FBUyxrQkFKVEQ7b0JBTUosS0FqQzZCRixvQkErQnpCRyxTQS9CeUJIO29CQWlDN0IsWUFGSUc7a0JBU04sSUFBSXJzQixFQXhDMkJrc0I7a0JBd0MvQixZQXhDK0JBLFlBd0MzQmxzQjtrQkFBSixZQXhDK0Jrc0IsWUF3QzNCbHNCO2tCQUFKOzhCQXhDK0Jrc0IsWUF3QzNCbHNCO2tCQUFKLFlBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUosTUF4QytCa3NCLFdBd0MvQixLQU1JNWYscUJBTko7O3dCQU9BaFI7b0JBQ0U7c0JBQVEsSUFBSm9FLEVBQUksaUJBRk40TSxFQUNKaFI7c0JBQ1UsUUFBSm9FLEVBRUYsaUJBSkE0TSxFQUNKaFIsWUFDTW9FLElBUkZNO3NCQVFNLFNBRFYxRTs7O2dCQU9GLEtBdERzQjJ3QixhQUFXQyxvQkFHN0Jwc0I7Z0JBbURKLFlBdERpQ29zQixZQUc3QnBzQjtnQkFtREo7Ozs7Ozs7Ozs7O21CQXVCQzthQUVDd3NCLGFBQWNOLGVBQWVqb0I7TUFDL0I7ZUFEZ0Jpb0Isd0JBQ21Cdm5CLElBQUkzRSxHQUFLLGFBRGJpRSxHQUNJVSxNQUFJM0UsRUFBcUIsRUFBQzthQUUzRHlzQixjQUFjVCxJQUF1QjlyQjtNQUN2QyxHQURnQjhyQixJQUFpQixRQUFqQkEsc0JBQWlCQyxhQUFqQkM7TUFDaEI7WUFEZ0JBLGVBekJkN3hCLFNBbkhBRDtPQXdKcUMsS0FadkI4eEIsZUF6QmQ3eEIsU0FuSEFEO09Bc0pVOzs7Ozs7O2tDQVYyQjhGO09BRXhCLGNBRndCQTtNQUV4Qjt1QkFETWtzQixRQUFVLHNCQUE4Qjs7Ozs7Ozs7Ozs7bUJBYTVEO2FBRUNNLGFBQWFOLE9BQU9PO01BQ3RCLGdCQURlUCxjQUFPTztNQUN0QixZQURzQkE7TUFDdEIsUUFDdUM7YUFFckNDLGFBQWFSLE9BQU9TO01BQ3RCLFNBRGVUO01BQ2YsZ0JBRHNCUztNQUN0QixRQUErRDthQUU3RFgsZUFBZUUsUUFBUyxPQUFUQSxlQW5LZmh5QixhQW1Lc0Q7YUFFdEQweUIsT0FBT1Y7TUFDVCxJQUFJN29CLElBREs2b0I7TUFDVCxrQkFEU0Esb0JBQ0w3b0IsSUFDdUQ7YUFFekR3cEIsV0FBV1gsT0FBT2pJLEdBQUdDO01BQ3ZCLElBQUk3Z0IsSUFEbUI2Z0IsS0FBSEQsT0FDcEIsa0JBRGFpSSxVQUFPakksR0FDaEI1Z0IsSUFDcUM7YUFFdkN5cEIsZUFBZVosT0FBT2pJLEdBQUdDO01BQzNCLFFBRHdCRCxJQUNSLElBQ1Y1Z0IsSUFGcUI2Z0IsS0FBSEQsT0FHakIscUJBSFVpSSxVQUFPakksR0FFbEI1Z0I7TUFFRyxRQUVOO2FBRUQwcEIsZ0JBQWdCYixPQUFPNXdCLEdBQUksc0JBQVg0d0IsVUFBTzV3QixFQUFpQzthQUV4RDB4QixvQkFBb0JkLE9BQU81d0I7TUFDN0IsWUFENkJBLEtBRXRCLGVBRmU0d0IsVUFBTzV3QixLQUl2QjthQUdKMnhCLFlBQVlmLE9BQU81d0I7TUFDckIsc0JBRGM0d0Isc0JBQU81d0IsTUFDaUM7YUFFcEQ0eEIsYUFBYWhCLFFBQVMsT0FBVEEsYUFBb0M7YUFDakRpQixXQUFXakIsUUFBUyxPQUFUQSxhQUFtQzthQUU5Q2tCLGVBQWVsQixRQUFTLE9BQVRBLFVBQTJCO2FBQzFDbUIsYUFBYW5CLFFBQVMsT0FBVEEsVUFBMEI7YUFFdkNvQixTQUFTcEI7TUFDWDtXQURXQTtPQUNYLEtBQUlxQixRQXhNRnJ6QjtPQXdNRixXQURXZ3lCLGdCQUNQcUI7TUFIb0IsV0FTbkI7YUFNSEMsWUFBWXpMO01BQ2Q7O1VBRUl3TCxJQUhVeEw7TUFDZCxHQUVJd0wsUUF2TkZyekI7T0F5TkEsWUFGRXF6QixPQXBHRnB6QjtNQXVHRjtjQUF1Qjs7OztPQTFOckJEO09BeUlBb3lCO09BR0FDO09BbEJBVjtPQWtDQVc7T0FJQUU7T0FHQVY7T0FFQVk7T0F5QkFLO09BR0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BYUFFO09BM0NBWDtPQUlBQztPQVFBQztPQUVBQztPQWhKQXZCO09BVUFHOztJK0JnQlU7Ozs7OztPQUNBO09BQ1MsbUIvQm5FbkIxeEI7TytCb0VpQixtQi9CcEVqQkE7Ozs7Ozs7Ozs7Ozs7SStCaUVVLFNBaUJWd3pCO01BQ0Y7ZUFuQkVEO09BbUJGLFFBQUlFO09BRVEscUJBRFJDO09BRVEscUJBRlJBO09BR1kseUJBSFpBLFEvQnBGRjF6QjtPK0J3RlksdUJBSlYwekIsUS9CcEZGMXpCO00rQnlGQSxPQXpCQXV6QixTQXFCRUksUUFGQUY7TUFNRixTQUpFRTtNQU1GLE9BM0JBSixTQXNCRUssUUFIQUg7TUFRRixTQUxFRztNQU9GLE9BN0JBTCxTQXVCRU0sWUFKQUo7TUFVRixTQU5FSTtNQVFGLE9BL0JBTixTQXdCRU8sVUFMQUw7TUFZRixTQVBFSztNQU9GLFNBWEVKO01BV0YsUUFFd0I7SUFoQ2QsU0FrQ1ZLO01BQ0YsT0FwQ0VSLG1CQW9DRixtQkFDdUI7SUFwQ1gsSUFzQ1ZTLHlDQUFnRCxRQUFLO0lBdEMzQyxTQXdDVkMsUUFBUUMsT0FBT0MsTUFBTUMsTUFBTXBDO01BQzdCO2dCQTFDRXVCO09BMENGLFFBMUNFQTtPQTBDRixlQTFDRUE7T0EwQ0YsV0ExQ0VBO09BMENGLGVBMUNFQTtPQTBDRixVQTFDRUE7T0EwQ0YsYUExQ0VBO01BMENGLFNBMUNFQTtNQTBDRixTQURpQlk7TUFDakIsVUFENkJuQztNQUM3QjtZQUFhNEMsTUFBSUM7UUFDZjtVQUFNLG9DQUZFWCxPQXpDUlgsSUEwQ1dxQixJQUFJQztVQUNUOzthQUVjLElBSExDLE1BR0ssV0FKQ1YsTUFBTXBDO2FBSVAsU0FKT0E7YUFJUCxVQUpPQTthQUlQLElBSFQ0QyxNQUFJQzs7bUJBUVg7bUJBU0EsbUJBakJPRCxNQUFJQzttQkFtQlgsbUJBbkJPRCxNQUFJQzs7YUFVWDtlQUUrRDtxQkF0RG5FdEI7Z0JBc0RtRTs0QkFBaEMsaUJBYjNCVywwQkF6Q1JYO2dCQXNEbUU7Z0JBWnBEd0I7Z0JBQUpDOzs7dUNBZVA7bUJBZldELFFBQUpDOzJCQUFJSDs7O2FBcUJYLFdBdEJJWCxpQ0FDR1UsTUFBSUM7WUFtQ1pJOztRQUNILElBQUlDLFVBOUVKM0I7UUE4RUEsVUFiRWM7UUFhRixVQVpFQztRQVlGLFNBWEVDO1FBV0YsVUFWRUM7UUFVRixTQVRFQztRQVNGLFNBUkVDO1FBUUYsVUFQRUM7UUFPRixHQURHTSxtQkFXQyxJQURLenZCLEVBVk55dkIsT0FXQyxPQURLenZCO1FBR0w7O2lCQUNPMnZCO1VBQ0EsWUFEQUE7WUFFdUIsc0JBRnZCQTtZQUVFLHdCQXBETGpCLDhCQXFDSmdCOzs7VUFnQlMsd0JBckRMaEIsVUFrREdpQixrQkFiUEQsYUFnQndEO1FBSnhELE1BYkRELElBa0JVO0lBOUZILFNBZ0dWRyxTQUFTN0IsSUFBSTN0QjtNQUNmLFNBRFcydEIsVUFBSTN0QixNQUNMLHdCQURDMnRCLHNCQUN3QjtJQWpHdkIsU0FtR1Y4QjtNbEM3TEwsSWtDOExnQmowQixFQXJHWG15QjtNQXNHQTtlQURXbnlCO1VBRU47aUJBdkdMbXlCLFVBcUdXbnlCO1dBR0Esb0JBeEdYbXlCO1dBd0dXLE1BeEdYQSxVQXFHV255QjtXQUlBLG9CQXpHWG15QjtVQTBHSyxpQkFGQytCLEdBQ0FDLElBQ2EsT0FGYkQ7VUFERCxJQUdzQixJQUxoQmwwQjs7UUFDSSxTQXRHZm15QjtRQXNHZSx3QkF0R2ZBLHVCQTZHZTtJQTVHTCxTQThHVmlDO01BQW9CLFNBL0dwQmpDLFFBK0dvQix3QkEvR3BCQSxzQkErR2dEO0lBOUd0QyxTQStHVmtDLGNBQWM3dkI7TUFBSSxTQWhIbEIydEIscUJBZ0hjM3RCO01BQUksd0JBaEhsQjJ0QixzQkFnSHFFO0lBL0czRCxTQWdIVm1DLFlBQVk5dkI7TUFBSSxTQWpIaEIydEIscUJBaUhZM3RCO01BQUksd0JBakhoQjJ0QixzQkFpSGlFO0lBaEh2RCxTQWtIVm9DLG9CQUFrQiw2QkFBOEI7SUFsSHRDLFNBbUhWQyxrQkFBZ0IsMkJBQTRCO0lBbkhsQyxTQW9IVkMsVUFBVWp3QixHQUFJLHFCQUFKQSxLQUE4QjtJQXBIOUIsU0FxSFZrd0IsUUFBUWx3QixHQUFJLG1CQUFKQSxLQUE0QjtJQXJIMUIsU0F1SFZtd0IscUJBQXFCWjtNQUN2QixrQkFsRkVuQix5QkFpRnFCbUIsSUFDZTtJQXhIMUIsU0EwSFZhLG1CQUEyQixRQUFFO0lBMUhuQjs7O09Ba0hWTDtPQUNBQztPQUNBQztPQUNBQztPQWxCQVQ7T0FXQUc7T0FDQUM7T0FDQUM7T0E5RUEzQjs7c0JsQzVITDs7T2tDa0lLRTtPQXdEQW1CO09BdUJBVztPQUdBQztJQTFIVTs7Ozs7a0JDVk5DLGNBQVMsVUFFRyxJQUFOckosV0FBTSxPQUFOQSxFQURHLFFBQ0k7a0JBT2I3YixPQUFPckosRUFBRWxDLEVBQUVDO1dBQ2IsR0FEU2lDLEVBQ3NDLE1BRHRDQSxLQUNMd3VCLEdBQXFDdEosV0FBckNzSjtXQUNKLEdBRmF6d0IsRUFFa0MsUUFGbENBLEtBRVQyd0IsR0FBcUNELGFBQXJDQztXQUNKLFNBRElBLE1BREFGLGNBQ0FFO3FCQUZLMXVCLEVBQUVsQyxFQUFFQyxPQUd5QztrQkFPcEQ0d0IsSUFBSTN1QixFQUFFbEMsRUFBRUM7V0FDVixHQURNaUMsRUFDeUMsTUFEekNBLEtBQ0Z3dUIsR0FBcUN0SixXQUFyQ3NKO1dBQ0osR0FGVXp3QixFQUVxQyxRQUZyQ0EsS0FFTjJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osSUFESUEsY0FEQUY7YUFFZ0IsR0FIZHh1QjtlQU9nQixJQURDNHVCLEdBTmpCNXVCLEtBTVc2dUIsR0FOWDd1QixLQU1LOHVCLEdBTkw5dUIsS0FPZ0IsWUFEQzR1QjtlQUNkLGtCQURFRSxJQUVVLGNBRlZBLEdBQU1ELEdBRUksT0FGRUQsR0FOZjl3QixFQUFFQztlQVNDLEdBSFk2d0I7aUJBT21CLElBRFhHLElBTlJILE1BTUNJLElBTkRKLE1BTU5LLElBTk1MLE1BT21CLFlBRFhHLElBWnZCanhCLEVBQUVDO2lCQWFTLHFCQVBSK3dCLEdBQU1ELEdBTUFJLEtBQU9EO2VBREw7YUFOTjtXQVVKLElBZExSLGNBQ0FFO2FBYXlCLEdBZm5CM3dCO2VBbUJZLElBRENteEIsR0FsQmJueEIsS0FrQk9veEIsR0FsQlBweEIsS0FrQkNxeEIsR0FsQkRyeEIsS0FtQlksWUFEWHF4QjtlQUNGLGtCQURjRixJQUVSLHFCQXBCVGx2QixFQUFFbEMsRUFrQkdzeEIsSUFBTUQsR0FBTUQ7ZUFHWixHQUhBRTtpQkFPNkIsSUFEVEMsSUFOcEJELE1BTWFFLElBTmJGLE1BTU1HLElBTk5ILE1BTzZCLFlBRFRDLElBTmRGLEdBQU1EO2lCQU9KLHFCQXpCYmx2QixFQUFFbEMsRUF3QlN5eEIsS0FBT0Q7ZUFETDthQU5OO1dBV1gsU0ExQkVaLE1BREFGLGNBQ0FFO3FCQUZFMXVCLEVBQUVsQyxFQUFFQyxPQTRCOEM7a0JBSWxEeXhCLElBQUlqeEIsRUFFUm1NO1duQ3JJVCxHbUNxSVNBO2FBQ1UsSUFEQzNNLEVBQVgyTSxLQUFRNU0sRUFBUjRNLEtBQUsxSyxFQUFMMEssS0FDVSxvQkFIRm5NLEVBRUFUO2FBQ0UsU0FBSmdELEVBQ1UsT0FGaEI0SjthQUdFLFFBRkk1SixHQU1PLElBQUxvdUIsR0FBSyxJQVRMM3dCLEVBRUdSLEdBT0UsT0FQRkEsTUFPSG14QixHQVBSeGtCLEVBUTJCLElBUnRCMUssRUFBR2xDLEVBT0FveEI7YUFORSxJQUdGSixHQUFLLElBTkx2d0IsRUFFSHlCO2FBSVEsT0FKUkEsTUFJRzh1QixHQUpScGtCLEVBSzJCLElBRG5Cb2tCLEdBSkFoeEIsRUFBR0M7V0FERixZQUREUTtrQkFZUmt4QixVQUFVbHhCLEdBQUksWUFBSkEsTUFBb0M7a0JBUzFDbXhCLGdCQUFnQm54QjtXbkN4SjdCO2lCbUMwSnFCUixXQUFIRCxXQUFIa0M7YUFDRiwyQkFIZ0J6QixFQUVkeUIsR0FBR2xDLEVBQUdDO1dBREgsaUJBRFdRO2tCQUtoQm94QixnQkFBZ0JweEI7V25DN0o3QjtpQm1DK0pxQlIsV0FBSEQsV0FBSGtDO2FBQ0UsV0FERkEsRUFBR2xDLEVBQ0QsZ0JBSFlTLEVBRVJSO1dBREgsaUJBRFdRO2tCQVFoQnVULEtBQUs5UixFQUFFbEMsRUFBRUM7V0FDZixHQURXaUM7Z0JBQUlqQzs7Z0JBSTJDNnhCLEdBSjNDN3hCO2dCQUlxQ214QixHQUpyQ254QjtnQkFJK0JveEIsR0FKL0JweEI7Z0JBSXlCcXhCLEdBSnpCcnhCO2dCQUlhOHhCLEdBSmpCN3ZCO2dCQUlXNHVCLEdBSlg1dUI7Z0JBSUs2dUIsR0FKTDd1QjtnQkFJRDh1QixHQUpDOXVCO3VCQUkrQzR2QixjQUE5QkM7d0JBQ00sSUFEeEJmLEdBQU1ELEdBQ2tCLEtBRFpELEdBSlQ5d0IsRUFBRUM7eUJBSWE4eEIsY0FBOEJELEdBRTlCLFNBTmpCNXZCLEVBQUVsQyxFQUkyQnN4QixJQUFNRCxHQUFNRCxJQUdoRCxPQVBPbHZCLEVBQUVsQyxFQUFFQzthQUdDLHVCQUhIRCxFQUFGa0M7V0FFSyx1QkFGSGxDLEVBQUVDLEVBT0M7a0JBSVYreEI7V25DaExiO1dtQ2dMdUI7Ozs7ZUFFTSxJQUFOaHlCO2VBQU0sT0FBTkE7YUFETCxnQkFFVztrQkFFaEJpeUI7V25DckxiO1dtQ3FMMkI7Ozs7ZUFFRSxJQUFOanlCO2VBQU0sVUFBTkE7YUFETCxTQUVlO2tCQUVwQmt5QjtXbkMxTGI7V21DMEx1Qjs7OEJBR0gsK0JBQU4xUDtlQURlLElBQWZ4aUI7ZUFBZSxPQUFmQTthQURJLGdCQUVXO2tCQUVoQm15QjtXbkMvTGI7V21DK0wyQjs7OEJBR1AsK0JBQU4zUDtlQURlLElBQWZ4aUI7ZUFBZSxVQUFmQTthQURJLFNBRWU7a0JBSXBCb3lCO1dBQWlCOzs7bUJBR1ZueUIsV0FBSEQsV0FBYSxnQ0FBYkEsRUFBR0M7YUFEUyxJQUFOb3lCO2FBQU0sT0FBTkE7V0FETCwwQ0FFa0M7a0JBZ0IzQ3RrQixPQUFPaU0sR0FBR0Y7V0FDWixHQURTRTthQUlHLEdBSkFGO2VBSXFCLHdCQUpyQkEsSUFJUSxZQUpYRSxHQUlXLFFBSlJGO2FBR0ksT0FIUEU7V0FFTyxPQUZKRixFQUl3QztrQkFROUN3WSxNQUFNN3hCO1duQ3JPbkI7YW1DeU9tQixJQURDUixXQUFIRCxXQUFIa0MsV0FDSyxvQkFKQXpCLEVBR0ZUO2FBQ0UsU0FBSmdELEVBQ1UsVUFGWGQsSUFBTWpDO2FBR0osUUFGRCtDO2VBS21CLGdCQVRmdkMsRUFHQ1IsR0FNYztlQUFjLGVBTmxDaUMsRUFBR2xDLEVBTUM4d0IsSUFBSXlCLEtBQU1uQjthQUxUO2NBR2UsY0FQZjN3QixFQUdMeUI7Y0FJb0I7OzthQUF3QixVQUF4Qzh1QixHQUFJd0IsT0FBb0MsS0FBOUJsQixHQUpYdHhCLEVBQUdDO1dBRFQ7YUFXRmtOO2tCQUVBcUIsZ0JBQVcsZ0JBQW1DO2tCQUUxQ2lrQixJQUFJaHlCO1duQ3RQakI7OztlbUN5UG1CO2dCQURDUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSyxvQkFIRnpCLEVBRUFUO2dCQUNFLFdBQUpnRDtlQUFJLFFBRkQ7ZUFFQyxJQURDd2YsYUFDTHhmLEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFLTGtRLE9BQU9qeUIsRUFFWG1NO1duQzlQVCxHbUM4UFNBO2FBQ1UsSUFERTNNLEVBQVoyTSxLQUFTNU0sRUFBVDRNLEtBQU0xSyxFQUFOMEssS0FDVSxvQkFIQ25NLEVBRUZUO2FBQ0MsU0FBSmdEO2VBL0NSLEdBOENRZDtpQkEzQ0ksR0EyQ0VqQzttQkEzQ2tCLHdCQTJDbEJBLEdBM0NLLFdBMkNYaUMsRUEzQ1csUUEyQ0xqQztpQkE1Q0UsT0E0Q1JpQztlQTdDUSxPQTZDRmpDO2FBSVIsUUFIRStDLEdBUVMsSUFBTG91QixHQUFLLE9BWEozd0IsRUFFQ1IsR0FTRyxPQVRIQSxNQVNGbXhCLEdBVFZ4a0IsRUFXVyxJQVhMMUssRUFBR2xDLEVBU0NveEI7YUFSQSxJQUlBSixHQUFLLE9BUEp2d0IsRUFFTHlCO2FBS1MsT0FMVEEsTUFLSTh1QixHQUxWcGtCLEVBT1csSUFGRG9rQixHQUxEaHhCLEVBQUdDO1dBREg7a0JBY0wweUIsTUFBTXJ4QixHQUFHQztXQUNmLEdBRFlEO2dCQUFHQzs7Z0JBSTJDd1ksR0FKM0N4WTtnQkFJcUNxeEIsR0FKckNyeEI7Z0JBSStCK0gsR0FKL0IvSDtnQkFJeUJFLEdBSnpCRjtnQkFJYTBZLEdBSmhCM1k7Z0JBSVV3VSxHQUpWeFU7Z0JBSUlrVCxHQUpKbFQ7Z0JBSUZFLEdBSkVGO2tCQUk4Q3lZLE1BQTlCRTtpQkFFdEIsU0FGb0RGLEdBRXJDLFdBRnlCelEsR0FKbENoSTtpQkFPYzs4QkFIVmtULEdBSkRqVDtrQkFPVzs7a0JBQ0ksV0FKUnVVLEdBR0YrYztpQkFDUCxrQkFKSHJ4QixHQUdHMFgsTUFIRzFFO2VBT1YsU0FQc0J5RixHQU9QLFdBUEx6RixHQUpEalQ7ZUFZVzs4QkFSb0IrSCxHQUpsQ2hJO2dCQVljOztnQkFDSSxXQURWd3hCLEtBUmdDRjtlQVN2QyxrQkFEQTNaLEtBUjJCeFgsSUFBTTZIO2FBRDdCLE9BSExoSTtXQUVLLE9BRkZDLEVBY047a0JBRUh3eEIsTUFBTXp4QixHQUFHQztXQUNmLEdBRFlEO2dCQUFHQztlQUtMLElBRFl1VSxHQUpWeFUsTUFJSWtULEdBSkpsVCxNQUlGRSxHQUpFRixNQUtGLFdBRE1rVCxHQUpEalQsSUFLTDs7aUJBSW9CLElBRGJxeEIsV0FDYSxXQUxSOWMsR0FJTDhjO2lCQUNKLGtCQUxIcHhCLFNBQU1nVDtlQUNOLElBRUYsYUFBcUIsV0FIUHNCLEdBRUorYztlQUNILG9CQUhMcnhCO2FBRE07V0FEQSxRQU8yQjtrQkFVckN3eEIsVUFBVXZ5QjtXbkM5U3ZCO2FtQ2tUbUIsSUFEQ1IsV0FBSEQsV0FBSGtDLFdBQ0ssb0JBSkl6QixFQUdOVDthQUNFLFNBQUpnRCxFQUNVO2FBQ1QsUUFGREE7ZUFPSSxvQkFYSXZDLEVBR0hSO2VBUUQ7cUJBRVVteEIsWUFBSk4sWUFBcUIsZUFWaEM1dUIsRUFBR2xDLEVBVVE4d0IsSUFBSU07ZUFETDthQVJMLFlBR0EsVUFQSTN3QixFQUdUeUI7YUFJSzttQkFFVW92QixjQUFKTjs7O3VDQUF5Qyx1QkFBckNNLE1BTlp0eEIsRUFBR0MsRUFNeUQ7YUFEckQ7V0FOYiw0QkFBNEIsUUFBSztrQkFhL0JnekIsU0FBUzN4QixHQUFHQztlQUFIdWpCLFFBQUdIO1dBQ2xCO2dCQURlRyxRQUFHSDttQkFHSTdPLEdBSFBnUCxRQUdDdFEsR0FIRHNRLFFBR0x0akIsR0FIS3NqQjsyQkFBR0gsS0FJRztlQUNOLG9CQUZDblEsR0FIRW1RO2VBS0g7aUJBQ2EsSUFBUGlPLFlBQUpueEIsWUFBVyxjQUhsQkQsR0FHT0M7aUJBQVc7bUJBQThCLG9CQUFyQ214QixNQU5OOU4sS0FHT2hQLEdBSEo2TztpQkFPRDs7YUFMWSxTQUtQO2tCQUVoQnRILEtBQUsvYixHQUFHQztXQUNkLEdBRFdEO2dCQUFHQztlQUtKLElBRFl1VSxHQUpYeFUsTUFJS2tULEdBSkxsVCxNQUlERSxHQUpDRixNQUtELFdBRE1rVCxHQUpGalQsSUFLSjs7aUJBSWtCLElBRFhxeEIsV0FDVyxVQUxOOWMsR0FJTDhjO2lCQUNGLG1CQUxMcHhCO2VBQ0EsSUFFRixhQUFxQixVQUhQc1UsR0FFSitjO2VBQ0wsaUJBSEhyeEIsU0FBTWdUO2FBREMsT0FITmxUO1dBRUssUUFPd0I7a0JBSWxDNHhCLFVBQVU1eUIsRUFBRXdJO2VBQUYrSCxNQUFFNlM7V0FDbEI7Z0JBRGdCN1M7O2dCQUdINVEsRUFIRzRRO2dCQUdON1EsRUFITTZROztnQkFBRXVpQixPQUdScHpCLEVBQUdDLEVBSEt5akI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBRzRCO2tCQWE1Q2xhLFFBQVFsSSxHQUFHQztXQUNrQixtQkFEbEJBLE1BQ0QsZUFERkQsTUFYUThILFFBQUdDO1dBQ25CO2dCQURnQkQ7a0JBQUdDO2lCQU1UO2tCQURzQmtxQixLQUxibHFCO2tCQUtTdXBCLEdBTFR2cEI7a0JBS0tDLEdBTExEO2tCQUtMbXFCLEtBTEVwcUI7a0JBS04wTSxHQUxNMU07a0JBS1ZvTCxHQUxVcEw7a0JBTU4sb0JBREpvTCxHQUFrQmxMO2lCQUNkLFNBQUp0RzttQkFHK0I7bUNBSlQ0dkIsR0FBSVc7b0JBSWIsZUFKVHpkLEdBQUkwZDtvQkFMRXBxQjtvQkFBR0M7O2lCQVFaLE9BRkRyRztlQUZNO2FBREMsT0FITXFHLFFBWTRCO2tCQUUvQ0YsTUFBTTdILEdBQUdDLElBQ1gscUJBRFFELEdBQUdDLE9BQ007a0JBRVhveUIsT0FBT3J5QixHQUFHQztlQUFIdWpCLFFBQUdIO1dBQ2hCO2dCQURhRztrQkFBR0g7aUJBT0o7a0JBRG9DaU8sR0FOaENqTztrQkFNMEJyYixHQU4xQnFiO2tCQU1vQmxqQixHQU5wQmtqQjtrQkFNTTdPLEdBTlRnUDtrQkFNR3RRLEdBTkhzUTtrQkFNSHRqQixHQU5Hc2pCO2tCQU9ELG9CQURJdFEsR0FBMEJsTDtpQkFDOUIsU0FBSnRHO21CQUVGLGdCQUhJeEIsR0FBMEJDO21CQUc5QixhQVRPcWpCLEtBTVNoUCxHQU5ONk8sS0FNZ0NpTzttQkFJdkM7eUJBSEQ1dkI7bUJBTUYscUJBUFV3UixHQUFNc0IsTUFBMEI4YzttQkFPMUMsYUFiTzlOLEtBTUh0akI7bUJBRE47aUJBRVEsU0FJTixVQUxJQSxHQUFNZ1QsUUFBb0IvUztpQkFLOUIsYUFYT3FqQixLQU1TaFA7aUJBT2hCO2VBUkY7YUFGQSxTQVU2RDtrQkFFM0QxUyxLQUFLdEQ7V25DeFhsQjs7O21CbUMwWG9CRyxhQUFIRCxhQUFIa0M7ZUFBWSxLQUZScEMsRUFFSm9DO2VBQXNCLFdBRmxCcEMsRUFFREU7MkJBQUdDOzthQURGO2tCQUdMaUosS0FBS3BKLEVBQUVRLEVBQUUwRTtlQUFGNkwsTUFBRTNMO1dBQ2Y7Z0JBRGEyTDtlQUdlO2dCQUFmNVEsRUFIQTRRO2dCQUdIN1EsRUFIRzZRO2dCQUdOM08sRUFITTJPO2dCQUdlLGtCQUhqQi9RLEVBR0RFLEVBQXVCLEtBSHRCRixFQUdKb0MsRUFIUWdEO2dCQUFGMkwsSUFHQTVRO2dCQUhFaUY7O2FBRUosT0FGSUEsT0FHa0M7a0JBRTNDK0osUUFBUUM7V25DallyQjs7O2VtQ21ZMEI7Z0JBQU5qUDtnQkFBSEQ7Z0JBQUhrQztnQkFBWSxnQkFGTGdOLEVBRUpsUDtlQUFTO2lCQUFPLGlCQUZaa1AsRUFFUGhOO2lCQUFtQixxQkFBYmpDO2lCQUFhOzs7ZUFEZjs7a0JBR0xrUCxPQUFPRDtXbkNyWXBCOzs7ZW1DdVkwQjtnQkFBTmpQO2dCQUFIRDtnQkFBSGtDO2dCQUFZLGdCQUZOZ04sRUFFSGxQO2VBQVM7OztpQkFBTyxnQkFGYmtQLEVBRU5oTjtpQkFBbUIsdUJBQWJqQztpQkFBYTtlQURmOztrQkFHTDZOLE9BQU9vQixFQUVYdEM7V25DM1lULEdtQzJZU0E7YUFFVztjQUZDM00sRUFBWjJNO2NBQVM1TSxFQUFUNE07Y0FBTTFLLEVBQU4wSztjQUVXLFdBSkFzQyxFQUVMaE47Y0FHSyxjQUxBZ04sRUFFRmxQO2NBSUUsV0FOQWtQLEVBRUNqUDthQUlELEdBREwyekIsT0FIQTF4QixNQUVBMlcsT0FGTTVZLE1BSU5veUIsSUFFcUIsT0FOM0J6bEIsRUFNa0MsWUFKNUJpTSxJQUZHN1ksRUFJSHF5QjthQUdDLGNBTER4WixJQUVBd1o7V0FMRztrQkFVTDNmLFVBQVV4RDtXbkNwWnZCO2FtQ3daMEI7Y0FGTmpQO2NBQUhEO2NBQUhrQztjQUVZLGdCQUpIZ04sRUFFVGhOO2NBRVk7O2NBQ04sY0FMR2dOLEVBRU5sUDtjQUlTLGtCQU5Ia1AsRUFFSGpQO2NBSU07O2dCQURYMnpCLElBR2dCLGdCQUpYQyxHQUVBRSxJQUVILGVBSkRELEdBRkM5ekIsRUFJRGcwQjthQUZVLFNBS0ssS0FMWEgsR0FGSDd6QixFQUlHK3pCO2FBR0gsaUJBTERELEdBRUFFO1dBTEU7a0JBVUxDO1dBQVc7YUFFZ0IsSUFBdkJoMEIsV0FBSGlDLFdBQTBCLGNBQXZCakM7YUFBTSxpQkFBVGlDO1dBREksUUFDZ0M7a0JBRXJDZ3lCOzs7O2VBRWdDO2dCQUF6QmowQjtnQkFBSEQ7Z0JBQUhrQztnQkFBK0IsVUFBNUJsQyxFQUE0QixvQkFBekJDOzt3QkFBTmlDOzthQURJO2tCQUdUaXlCLFNBQVM3ekIsR0FDWCxzQkFEV0EsRUFDTTtrQkFNWDhPLEtBQUszTztXbkM5YWxCOzs7ZW1DaWJtQjtnQkFEQ1I7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ssb0JBSER6QixFQUVEVDtlQUNFLFNBQUpnRCxFQUNVLE9BRlJoRDtlQUNFLElBRUgsYUFGRGdELEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFlTDRSLFdBVGtCdDBCO1duQ3JiL0I7OzttQm1DaWNvQnV5QixlQUFIcHBCLGVBQUg0UDtlQUNBLGNBYmlCL1ksRUFZZG1KO2tDQUFINFA7Ozt5QkFUTTVZLFdBQUhELFdBQUhrQztxQkFDQSxjQUppQnBDLEVBR2RFLG1CQUFIa0M7K0JBQU1qQzs7bUJBRFQ7MkJBVVNveUI7O2FBRFQ7a0JBZ0JFZ0MsZUFUc0J2MEI7V25DdmNuQzs7O21CbUNtZG9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FicUIvWSxFQVlsQm1KO2tDQUFINFA7Ozt5QkFUTTVZLFdBQUhELFdBQUhrQztxQkFDQSxjQUpxQnBDLEVBR2xCRSxtQkFBSGtDOytCQUFNakM7O21CQURUOzJCQVVTb3lCOzthQURUO2tCQWdCRWlDLFVBVGlCeDBCO1duQ3pkOUI7OzttQm1DcWVvQnV5QixlQUFIcHBCLGVBQUg0UDtlQUNBLGNBYmdCL1ksRUFZYm1KO2tDQUFHb3BCOzs7eUJBVEFweUIsV0FBSEQsV0FBSGtDO3FCQUNBLGNBSmdCcEMsRUFHYkUsbUJBQUdDOytCQUFOaUM7O21CQURIOzJCQVVHMlc7O2FBREg7a0JBZ0JFMGIsY0FUcUJ6MEI7V25DM2VsQzs7O21CbUN1Zm9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0Fib0IvWSxFQVlqQm1KO2tDQUFHb3BCOzs7eUJBVEFweUIsV0FBSEQsV0FBSGtDO3FCQUNBLGNBSm9CcEMsRUFHakJFLG1CQUFHQzsrQkFBTmlDOzttQkFESDsyQkFVRzJXOzthQURIO2tCQU9FMmIsU0FBUy96QjtXbkM3ZnRCOzs7ZW1DZ2dCbUI7Z0JBRENSO2dCQUFIRDtnQkFBSGtDO2dCQUNLLG9CQUhHekIsRUFFTFQ7ZUFDRSxTQUFKZ0QsRUFDVSxVQUZSaEQ7ZUFDRSxJQUVILGFBRkRnRCxFQURLL0MsRUFBTmlDLFVBQU1zZ0I7O2FBREY7a0JBTVRpUyxTQUFTdnlCLEVBQUVsQyxFQUFFQztXbkNwZ0J0QjtXbUN3Z0JPLFNBSldpQzthQUlrQixpQkFKbEJBO2FBSU0sK0JBSkpsQztXM0JZWDs7c0IyQlphQztlQUtnQixpQkFMaEJBO2VBS0UsMEJBTEpEOzJCQU1SLFlBTk1rQyxFQUFFbEMsRUFBRUM7V0FPRixhQVBGaUMsRUFPRSxJQVBBbEMsRUFBRUMsR0FPTztrQkFFaEIrSSxJQUFJbEosRUFFUjhNO1duQy9nQlQsR21DK2dCU0E7YUFFVTtjQUZDM00sRUFBWDJNO2NBQVE1TSxFQUFSNE07Y0FBSzFLLEVBQUwwSztjQUVVLFFBSkY5TSxFQUVIb0M7Y0FHSyxlQUxGcEMsRUFFQUU7Y0FJRSxRQU5GRixFQUVHRztnQkFBTmlDLE1BRUEyVyxPQUZHN1ksTUFHSGlKLE9BSE1oSixNQUlOb3lCLElBQ2tDLE9BTHZDemxCO2FBTU0sZ0JBSkRpTSxJQUNBNVAsSUFDQW9wQjtXQUxJO2tCQWVMemtCLFdBQVc5TixFQUVmOE07V25DL2hCVCxHbUMraEJTQTthQUVVO2NBRkMzTSxFQUFYMk07Y0FBUTVNLEVBQVI0TTtjQUFLMUssRUFBTDBLO2NBRVUsY0FKSzlNLEVBRVZvQztjQUdLLGVBTEtwQyxFQUVQRTtjQUlFLGNBTktGLEVBRUpHO2FBSUQsR0FETGdKO2VBSUMsSUFESXlyQixJQUhMenJCO2tCQUhBL0csTUFSTThYLE1BUUhoYSxNQU1FMDBCLE9BTkN6MEIsTUFSRzZaLEdBZThCLE9BUDVDbE47ZUFRVyxnQkFoQkFvTixHQWNEMGEsSUFkSTVhO2FBQ2hCLEdBRGFFO2VBSUQsR0FKSUY7aUJBSXFCLHdCQUpyQkE7aUJBSVEsZ0JBSlhFLEdBSVcsUUFKUkY7ZUFHQSxPQUhIRTthQUVHLE9BRkFGO1dBT0w7a0JBbUNUNmEsUUFBUXp5QjtXQUNWLEdBRFVBOzs7Ozs7Ozs7O3VCQVFZOzZDQVJaQTt3QkFwQlY7a0NBQVk5QixFQUFFOEI7MkJBQ1osVUFEVTlCOztxQ0FFQSxZQUZFOEI7O3lDQUdEMnlCLElBSEMzeUIsS0FHUDR5QixHQUhPNXlCLG9CQUdQNHlCLFFBQU1EOzs7a0NBSEMzeUI7Ozt1Q0FJSzZ5QixZQUFOM2EsV0FBTjRhLEtBSk85eUI7cURBSVA4eUIsVUFBTTVhLFFBQU0yYTs7O2tDQUpMN3lCOzs7Ozt5Q0FNVyt5QixZQUFOOWEsV0FBTkssYUFBTjBhLEtBTk9oekI7dURBTVBnekIsVUFBTTFhLFVBQU1MLFdBQU04YTsyQkFJckIsT0FWUTcwQixVQVdNLFVBRFYrMEIsR0FWTWp6QixHQVdJOzhCQUFKMlc7NkJBSU87OEJBRFJDLElBSENEOzhCQUdSdWMsSUFIUXZjOzhCQUlPLGFBZlR6WSxJQVVKKzBCLGdCQUlLcmM7OEJBQ1E7OzZCQUNmLGlCQUxFdlEsS0FHRjZzQixJQUNJNXNCLE9BQU82c0I7MkJBRkwsNEJBR2tCO3VCQUUxQixXQUFLLFNBbkJReGM7eUJBNEJFeWM7cUJBQWMsV0FBZEEsR0FBYyxTQUFRLFNBQVEsU0FBUTttQkFENUIseUJBQVEsU0FBUTtpQkFEcEIseUJBQVE7ZUFEWjthQURYO1dBREYsT0FqVk5ub0IsS0F1VmtEO2tCQUVsRG9vQixRQUFRMzVCLEVBQUUydEI7V0FDWiwwQkFBbUJqcEIsRUFBRUcsR0FBSyxXQUFMQSxFQUFGSCxFQUFjLEVBRHJCaXBCLEVBQUYzdEIsRUFDNEI7a0JBRXBDNDVCLE9BQU81NUIsR0FBSSxlQUFKQSxFQTVWUHVSLE1BNFYwQjtrQkFFdEJzb0IsWUFBYXp5QjtXQUFPLEdBQVBBO2FBRThCLElBQW5DbEgsS0FGS2tILEtBRVI0SixFQUZRNUosS0FFWHZDLEVBRld1QyxLQUU4QixlQUF0QzRKLEVBQUc5UTthQUFzQixVQUE1QjJFLGlCbkNsbEJmLE9tQ2dsQmFnMUI7V0FDRyxRQUMyRDtrQkFFbEU1Z0IsT0FBTzdSO1dBQWlCLG1CQUFqQkE7V0FBaUIsc0JuQ3BsQmpDLE9tQ2dsQmF5eUIsdUJBSXFDO2tCQUVyQ0MsVUFBVXAxQixFQUFFd0k7ZUFBRitILE1BQUU2UztXQUNsQjtnQkFEZ0I3Uzs7O2dCQUdON1EsRUFITTZRO2dCQUdUM08sRUFIUzJPO2dCQUFFdWlCLE9BR1JwekIsRUFBSGtDLEVBSFd3aEI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBRzRCO2tCQUV4Q2lTLGdCQUFpQjN5QjtXQUFPLEdBQVBBO2FBRThCLElBQXZDbEgsS0FGU2tILEtBRVo0SixFQUZZNUosS0FFZnZDLEVBRmV1QyxLQUU4QixlQUExQzRKLEVBQUc5UTthQUFzQixVQUE1QjJFLGlCbkM3bEJmLE9tQzJsQmFrMUI7V0FDRyxRQUMrRDtrQkFFdEVDLFdBQVc1eUI7V0FBcUIsbUJBQXJCQTtXQUFxQixzQm5DL2xCekMsT21DMmxCYTJ5QiwyQkFJNkM7a0JBRWpERSxZQUFZQyxJQUFJeDFCO2VBQ0Z1USxJQURFdlEsRUFDQTBDO1dBQUk7Z0JBQU42TjtlQUdFLElBREw1USxFQUZHNFEsT0FFQTdRLEVBRkE2USxPQUVOM08sRUFGTTJPLE9BR0Usb0JBREY3USxFQUhGODFCO2VBSUksU0FFUjExQjtpQkFBTyxRQUFQQSxHQUNLLFdBSkNKLEVBQUhDLEVBRksrQyxHQUFGNk4sSUFFTjNPLEVBRlFjO3FCQUFGNk4sSUFFSDVROztlQUNLLFlBREZELEVBQUhDLEVBRksrQzs7O21DbkNsbUJ6QixPbUNnbEJheXlCLHdCQTJCc0I7O2lCQXpYMUJ0b0I7aUJBRUFxQjtpQkFFSWlrQjtpQkFuSEFmO2lCQVlKQztpQkE2R0llO2lCQWVBQztpQkFnQkFJO2lCQWtDQUU7aUJBU0E1VjtpQkE2Qko3VDtpQkFHQUw7aUJBR0l3cUI7aUJBZUF2d0I7aUJBcUpBNEY7aUJBakpBRTtpQkFLQStGO2lCQUlBRTtpQkFJQXJCO2lCQW9KQUY7aUJBeklBOEU7aUJBV0F1aEI7aUJBUUpFO2lCQXZQSW5DO2lCQUtBQztpQkFLQUM7aUJBS0FDO2lCQWZBSDtpQkFLQUM7aUJBZ0RBSztpQkF5TUFsakI7aUJBK0VBb2xCO2lCQS9EQUo7aUJBa0JBQztpQkFrQkFDO2lCQWtCQUM7aUJBNkVKSTtpQkFnQ0FrQjtpQkFiQWhoQjtpQkFXQStnQjtpQkFwQkFMO2lCQUdBQztJQXRnQkc7SURrQkc7Ozs7a0JFYk4vRSxjQUFTLGNBRUhySixvQkFERyxRQUNJO2tCQUViN2IsT0FBT3JKLEVBQUV6QixFQUFFeVgsRUFBRWpZO1dBQ04sY0FEQWlDLEdBQ2tCLFVBRFpqQyxHQUNZLEtBQUwyd0IsTUFBbEJGLGNBQWtCRTtxQkFEYjF1QixFQUFFekIsRUFBRXlYLEVBQUVqWSxPQUU0QztrQkFFekQweEIsVUFBVWx4QixFQUFFeVgsR0FBSSxZQUFOelgsRUFBRXlYLE1BQXVDO2tCQUVuRDJZLElBQUkzdUIsRUFBRXpCLEVBQUV5WCxFQUFFalk7V0FDWixHQURNaUMsTUFDbUNrbEIsRUFEbkNsbEIsS0FDRnd1QixHQUFxQ3RKLFdBQXJDc0o7V0FDSixHQUZZendCLE1BRTZCMHdCLElBRjdCMXdCLEtBRVIyd0IsR0FBcUNELGFBQXJDQztXQUNKLElBRElBLGNBREFGO2FBRWdCLEdBSGR4dUI7ZUFPZ0IsSUFETzR1QixHQU52QjV1QixLQU1pQjZ6QixHQU5qQjd6QixLQU1XNnVCLEdBTlg3dUIsS0FNSzh1QixHQU5MOXVCLEtBT2dCLFlBRE80dUI7ZUFDcEIsa0JBREVFLElBRWEsY0FGYkEsR0FBTUQsR0FBTWdGLEdBRUMsT0FGS2pGLEdBTnJCcndCLEVBQUV5WCxFQUFFalk7ZUFTRCxHQUhrQjZ3QjtpQkFPb0I7a0JBRFhHLElBTlRIO2tCQU1Fa0YsSUFORmxGO2tCQU1MSSxJQU5LSjtrQkFNWkssSUFOWUw7a0JBT29CLFlBRFhHLElBWjlCeHdCLEVBQUV5WCxFQUFFalk7aUJBYU8scUJBUFIrd0IsR0FBTUQsR0FBTWdGLEdBTU41RSxLQUFPRCxJQUFPOEU7ZUFEWjthQU5OO1dBVUosSUFkTHRGLGNBQ0FFO2FBYXlCLEdBZmpCM3dCO2VBbUJVLElBRE9teEIsR0FsQmpCbnhCLEtBa0JXZzJCLEdBbEJYaDJCLEtBa0JLb3hCLEdBbEJMcHhCLEtBa0JEcXhCLEdBbEJDcnhCLEtBbUJVLFlBRFhxeEI7ZUFDRixrQkFEb0JGLElBRWQscUJBcEJUbHZCLEVBQUV6QixFQUFFeVgsRUFrQkNvWixJQUFNRCxHQUFNNEUsR0FBTTdFO2VBR2xCLEdBSEFFO2lCQU9tQztrQkFEUkMsSUFOM0JEO2tCQU1vQjRFLElBTnBCNUU7a0JBTWFFLElBTmJGO2tCQU1NRyxJQU5OSDtrQkFPbUMsWUFEUkMsSUFOckJGLEdBQU00RSxHQUFNN0U7aUJBT1YscUJBekJibHZCLEVBQUV6QixFQUFFeVgsRUF3Qk91WixLQUFPRCxJQUFPMEU7ZUFEWjthQU5OO1dBV1gsU0ExQkV0RixNQURBRixjQUNBRTtxQkFGRTF1QixFQUFFekIsRUFBRXlYLEVBQUVqWSxPQTRCaUQ7YUFFM0RrTjtrQkFFQXFCLGdCQUFXLGdCQUFtQztrQkFFMUNrakIsSUFBSWp4QixFQUFFMDFCLEtBR1Y1TTtXcEM1SFQsR29DNEhTQTthQUNVLElBRFFuQyxFQUFsQm1DLEtBQWV0cEIsRUFBZnNwQixLQUFZclIsRUFBWnFSLEtBQVN2cEIsRUFBVHVwQixLQUFNcm5CLEVBQU5xbkIsS0FDVSxvQkFKRjlvQixFQUdDVDthQUNDLFNBQUpnRCxFQUVGLE9BSFFrVixNQUhGaWUsS0FHVjVNLEtBQU1ybkIsRUFIRXpCLEVBQUUwMUIsS0FHS2wyQixFQUFHbW5CO2FBSVgsUUFIRHBrQixHQU9PLElBQUxvdUIsR0FBSyxJQVhMM3dCLEVBQUUwMUIsS0FHS2wyQixHQVFGLE9BUkVBLE1BUVBteEIsR0FSUjdILEVBUzJCLElBVHJCcm5CLEVBQUdsQyxFQUFHa1ksRUFRSmtaO2FBUEUsSUFJRkosR0FBSyxJQVJMdndCLEVBQUUwMUIsS0FHSmowQjthQUtPLE9BTFBBLE1BS0U4dUIsR0FMUnpILEVBTTJCLElBRG5CeUgsR0FMQ2h4QixFQUFHa1ksRUFBR2pZO1dBRGIsWUFGTVEsRUFBRTAxQjtrQkFjTi9tQixLQUFLM087V3BDdklsQjs7O2VvQzJJbUI7Z0JBREtSO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUNJLG9CQUpEekIsRUFHQVQ7ZUFDQyxTQUFKZ0QsRUFDVSxPQUZKa1Y7ZUFDRixJQUVILGFBRkRsVixFQURTL0MsRUFBVGlDLFVBQVNzZ0I7O2FBRGI7a0JBZUU0UixXQVRxQnQwQjtXcEMvSWxDOzs7O2dCb0MySndCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0Fib0IvWSxFQVloQm1KOytCQUFHeWIsVUFBTjdMOzs7eUJBVFM1WSxXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUpvQnBDLEVBR2hCRSxnQkFBR2tZLFFBQU5oVzsrQkFBU2pDOzttQkFEYjsyQkFVYW95Qjs7YUFEYjtrQkFnQkVnQyxlQVR5QnYwQjtXcENqS3RDOzs7O2dCb0M2S3dCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0Fid0IvWSxFQVlwQm1KOytCQUFHeWIsVUFBTjdMOzs7eUJBVFM1WSxXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUp3QnBDLEVBR3BCRSxnQkFBR2tZLFFBQU5oVzsrQkFBU2pDOzttQkFEYjsyQkFVYW95Qjs7YUFEYjtrQkFnQkVpQyxVQVRvQngwQjtXcENuTGpDOzs7O2dCb0MrTHdCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0FibUIvWSxFQVlmbUo7K0JBQUd5YixVQUFHMk47Ozt5QkFUQXB5QixXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUptQnBDLEVBR2ZFLGdCQUFHa1ksUUFBR2pZOytCQUFUaUM7O21CQURKOzJCQVVJMlc7O2FBREo7a0JBZ0JFMGIsY0FUd0J6MEI7V3BDck1yQzs7OztnQm9DaU53QnV5QjtnQkFBSDNOO2dCQUFIemI7Z0JBQUg0UDtlQUNELGNBYnVCL1ksRUFZbkJtSjsrQkFBR3liLFVBQUcyTjs7O3lCQVRBcHlCLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSnVCcEMsRUFHbkJFLGdCQUFHa1ksUUFBR2pZOytCQUFUaUM7O21CQURKOzJCQVVJMlc7O2FBREo7a0JBT0UyYixTQUFTL3pCO1dwQ3ZOdEI7Oztlb0MyTm1CO2dCQURLUjtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFDSSxvQkFKR3pCLEVBR0pUO2VBQ0MsU0FBSmdELEVBQ1UsVUFGSmtWO2VBQ0YsSUFFSCxhQUZEbFYsRUFEUy9DLEVBQVRpQyxVQUFTc2dCOzthQURiO2tCQU1FaVEsSUFBSWh5QjtXcEMvTmpCOzs7ZW9DbU9tQjtnQkFERVI7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ksb0JBSkZ6QixFQUdDVDtnQkFDQyxXQUFKZ0Q7ZUFBSSxRQUZSO2VBRVEsSUFERXdmLGFBQ054ZixFQURNL0MsRUFBTmlDLFVBQU1zZ0I7O2FBRFY7a0JBS0U0VDtXcEN0T2I7V29Dc08yQjs7OzttQkFFQWxlLGFBQUhsWTsyQkFBR2tZO2FBRFQsZ0JBRWdCO2tCQUVyQm1lO1dwQzNPYjtXb0MyTytCOzs7O21CQUVKbmUsYUFBSGxZOzhCQUFHa1k7YUFEVCxTQUVtQjtrQkFFeEJvZTtXcENoUGI7V29DZ1AyQjs7OEJBR04sK0JBQU45VDttQkFER3RLLGFBQUhsWTsyQkFBR2tZO2FBREEsZ0JBRWdCO2tCQUVyQnFlO1dwQ3JQYjtXb0NxUCtCOzs4QkFHViwrQkFBTi9UO21CQURHdEssYUFBSGxZOzhCQUFHa1k7YUFEQSxTQUVvQjtrQkFFekJzZTtXQUFxQjs7O21CQUdWdjJCLFdBQUhpWSxXQUFIbFk7ZUFBZ0Isb0NBQWhCQSxFQUFHa1ksRUFBR2pZO2FBRE0sSUFBTm95QjthQUFNLE9BQU5BO1dBRE4sMENBRTRDO3VCQUUvQ3JZLEdBQUdGO1dBQ1gsR0FEUUU7YUFLSixHQUxPRjtlQUtNLHNCQUxOQSxJQUtNO2VBQ0YsV0FOUEUsR0FLQ3ZaLEVBQUd5WCxFQUNHLG1CQU5KNEI7YUFHSyxPQUhSRTtXQUVRLE9BRkxGLEVBTTJCO2tCQUVoQzRZLE9BQU9qeUIsRUFHWDhvQjtXcEMxUVQsR29DMFFTQTthQUNVLElBRE10cEIsRUFBaEJzcEIsS0FBYXJSLEVBQWJxUixLQUFVdnBCLEVBQVZ1cEIsS0FBT3JuQixFQUFQcW5CLEtBQ1Usb0JBSkM5b0IsRUFHRFQ7YUFDQSxTQUFKZ0QsRUFDVSxZQUZUZCxFQUFTakM7YUFHVCxRQUZEK0MsR0FLTyxJQUFMb3VCLEdBQUssT0FURjN3QixFQUdLUixHQU1ILE9BTkdBLE1BTVJteEIsR0FOUjdILEVBTWtELElBTjNDcm5CLEVBQUdsQyxFQUFHa1ksRUFNTGtaO2FBTEUsSUFHRkosR0FBSyxPQVBGdndCLEVBR0p5QjthQUlNLE9BSk5BLE1BSUM4dUIsR0FKUnpILEVBSWtELElBQTFDeUgsR0FKRWh4QixFQUFHa1ksRUFBR2pZO1dBRGQ7a0JBU0V3MkIsT0FBT2gyQixFQUFFWCxFQU1ieXBCO1dwQ3hSVCxHb0N3UlNBO2FBQ1UsSUFEUW5DLEVBQWxCbUMsS0FBZXRwQixFQUFmc3BCLEtBQVlyUixFQUFacVIsS0FBU3ZwQixFQUFUdXBCLEtBQU1ybkIsRUFBTnFuQixLQUNVLG9CQVBDOW9CLEVBTUZUO2FBQ0MsU0FBSmdEO2VBRUkscUJBVEdsRCxLQU1Eb1k7ZUFHRjtpQkFHRixJQURHaWUsY0FDSCxPQU5JamUsTUFLRGllLEtBTFg1TSxLQUFNcm5CLEVBTkt6QixFQVdBMDFCLEtBTElsMkIsRUFBR21uQjtlQUlKLFlBSlJsbEIsRUFBU2pDO2FBT0osUUFOTCtDLEdBVU8sSUFBTG91QixHQUFLLE9BakJGM3dCLEVBQUVYLEVBTUVHLEdBV0YsT0FYRUEsTUFXUG14QixHQVhSN0gsRUFZMkIsSUFackJybkIsRUFBR2xDLEVBQUdrWSxFQVdKa1o7YUFWRSxJQU9GSixHQUFLLE9BZEZ2d0IsRUFBRVgsRUFNUG9DO2FBUU8sT0FSUEEsTUFRRTh1QixHQVJSekgsRUFTMkIsSUFEbkJ5SCxHQVJDaHhCLEVBQUdrWSxFQUFHalk7V0FKRCx1QkFGREg7V0FFQyxZQUVHLElBQVI0MkIsa0JBQVEsWUFKTmoyQixFQUlGaTJCO1dBREc7a0JBaUJSdHpCLEtBQUt0RDtXcEN0U2xCOzs7bUJvQ3dTd0JHLGFBQUhpWSxhQUFIbFksYUFBSGtDO2VBQ0osS0FIT3BDLEVBRUhvQztlQUNNLFdBSEhwQyxFQUVBRSxFQUFHa1k7MkJBQUdqWTs7YUFETjtrQkFJTCtJLElBQUlsSjtXcEMzU2pCO2FvQytTb0I7Y0FET3NuQjtjQUFIbm5CO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ssUUFKSHBDLEVBR0ZvQztjQUVLLGVBTEhwQyxFQUdJb1k7Y0FHRCxRQU5IcFksRUFHT0c7YUFHSixVQUZMNFksSUFERzdZLEVBRUgwa0IsSUFDQTJOLElBSFlqTDtXQURoQjtrQkFPRXpXLEtBQUs3UTtXcENwVGxCO2FvQ3dUb0I7Y0FET3NuQjtjQUFIbm5CO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ssU0FKRnBDLEVBR0hvQztjQUVLLGVBTEZwQyxFQUdBRSxFQUFHa1k7Y0FHRCxTQU5GcFksRUFHTUc7YUFHSixVQUZMNFksSUFERzdZLEVBRUgwa0IsSUFDQTJOLElBSFlqTDtXQURoQjtrQkFPRWxlLEtBQUtwSixFQUFFeXBCLEVBQUV2a0I7ZUFBRjJ4QixNQUFFenhCO1dBQ2Y7Z0JBRGF5eEI7ZUFJQTtnQkFESTEyQixFQUhKMDJCO2dCQUdDemUsRUFIRHllO2dCQUdGMzJCLEVBSEUyMkI7Z0JBR0x6MEIsRUFIS3kwQjtnQkFJQSxrQkFKRjcyQixFQUdBRSxFQUFHa1ksRUFDTSxLQUpUcFksRUFHSG9DLEVBSE9nRDtnQkFBRnl4QixJQUdJMTJCO2dCQUhGaUY7O2FBRUosT0FGSUEsT0FJcUI7a0JBRTlCK0osUUFBUUM7V3BDblVyQjs7O2VvQ3FVOEI7Z0JBQU5qUDtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFBZSxnQkFGVGdOLEVBRUhsUCxFQUFHa1k7ZUFBUztpQkFBUyxpQkFGbEJoSixFQUVOaE47aUJBQXdCLHFCQUFmakM7aUJBQWU7OztlQURyQjs7a0JBR0xrUCxPQUFPRDtXcEN2VXBCOzs7ZW9DeVU4QjtnQkFBTmpQO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUFlLGdCQUZWZ04sRUFFRmxQLEVBQUdrWTtlQUFTOzs7aUJBQVMsZ0JBRm5CaEosRUFFTGhOO2lCQUF3Qix1QkFBZmpDO2lCQUFlO2VBRHJCOztrQkFXTDIyQixnQkFBZ0JDLEVBQUVwMkI7V3BDblYvQjtpQm9DcVZ3QlIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7YUFDRiwyQkFIZ0IyMEIsRUFBRXAyQixFQUVoQnlCLEdBQUdsQyxFQUFHa1ksRUFBR2pZO1dBRE4saUJBRFc0MkIsRUFBRXAyQjtrQkFLbEJxMkIsZ0JBQWdCRCxFQUFFcDJCO1dwQ3hWL0I7aUJvQzBWd0JSLFdBQUhpWSxXQUFIbFksV0FBSGtDO2FBQ0ksV0FESkEsRUFBR2xDLEVBQUdrWSxFQUNGLGdCQUhVMmUsRUFBRXAyQixFQUVQUjtXQUROLGlCQURXNDJCLEVBQUVwMkI7a0JBUWxCdVQsS0FBSzlSLEVBQUVsQyxFQUFFa1ksRUFBRWpZO1dBQ2pCLEdBRFdpQztnQkFBTWpDOztnQkFLaUI2eEIsR0FMakI3eEI7Z0JBS1dteEIsR0FMWG54QjtnQkFLS2cyQixHQUxMaDJCO2dCQUtEb3hCLEdBTENweEI7Z0JBS1BxeEIsR0FMT3J4QjtnQkFJaUI4eEIsR0FKdkI3dkI7Z0JBSWlCNHVCLEdBSmpCNXVCO2dCQUlXNnpCLEdBSlg3ekI7Z0JBSUs2dUIsR0FKTDd1QjtnQkFJRDh1QixHQUpDOXVCO3VCQUt1QjR2QixjQURBQzt3QkFFRyxJQUYzQmYsR0FBTUQsR0FBTWdGLEdBRWUsS0FGVGpGLEdBSmY5d0IsRUFBRWtZLEVBQUVqWTt5QkFJaUI4eEIsY0FDQUQ7MEJBRU4sU0FQakI1dkIsRUFBRWxDLEVBQUVrWSxFQUtMb1osSUFBTUQsR0FBTTRFLEdBQU03RTswQkFHeEIsT0FST2x2QixFQUFFbEMsRUFBRWtZLEVBQUVqWTthQUdELHVCQUhIRCxFQUFFa1ksRUFBSmhXO1dBRUssdUJBRkhsQyxFQUFFa1ksRUFBRWpZLEVBUUM7a0JBTWhCOE4sT0FBT2lNLEdBQUdGO1dBQ1osR0FEU0U7YUFLTCxHQUxRRjtlQUtLLHNCQUxMQSxJQUtLO2VBQ0QsWUFOUEUsR0FLQXZaLEVBQUd5WCxFQUNJLG1CQU5KNEI7YUFHSSxPQUhQRTtXQUVPLE9BRkpGLEVBTTJCO2tCQUVyQ2lkLGVBQWUvYyxHQUFHaGEsRUFBRWtZLEVBQUU0QjtXQUN4QixHQURzQjVCLEdBRVYsSUFBTHdNLElBRmV4TSxLQUVWLFlBRks4QixHQUFHaGEsRUFFYjBrQixJQUZpQjVLLElBR2QsY0FIT0UsR0FBT0YsR0FHRjtrQkFFaEJ3WSxNQUFNN3hCO1dwQzNYbkI7YW9DK1htQjtjQURLUjtjQUFIaVk7Y0FBSGxZO2NBQUhrQztjQUNJLG9CQUpBekIsRUFHRFQ7YUFDQyxTQUFKZ0QsRUFDVSxVQUZWZCxLQUFNZ1csR0FBR2pZO2FBR1IsUUFGRCtDO2VBS21CLGdCQVRmdkMsRUFHS1IsR0FNVTtlQUFjLGVBTmpDaUMsRUFBR2xDLEVBQUdrWSxFQU1INFksSUFBSXlCLEtBQU1uQjthQUxUO2NBR2UsY0FQZjN3QixFQUdKeUI7Y0FJbUI7OzthQUF3QixVQUF4Qzh1QixHQUFJd0IsT0FBb0MsS0FBOUJsQixHQUpWdHhCLEVBQUdrWSxFQUFHalk7V0FEYjtrQkFTRTJqQixNQUFNOWpCLEVBQUV3QixHQUFHQztXQUNqQixHQURjRDtpQkFHcUIyWSxHQUhyQjNZLE1BR2V3VSxHQUhmeFUsTUFHUzAxQixHQUhUMTFCLE1BR0drVCxHQUhIbFQsTUFHSEUsR0FIR0Y7YUFHd0MsVUFIckNDLE9BR2tCMFk7ZUFDWjs0QkFETnpGLEdBSEFqVDtnQkFJTTs7O2dCQUNtQyxXQUw5Q3pCLEVBR2lCZ1csR0FDWjhjO2dCQUNxQixnQkFMMUI5eUIsRUFHSzBVLE1BQU13aUIsSUFDVkM7ZUFDTSw0QkFMUG4zQixFQUdEMEIsR0FDRkMsSUFEUStTOztZQURHLEtBRkhqVCxHQUVHO2NBRkhBO2FBT007Y0FEU3N4QixLQU5mdHhCO2NBTVMyMUIsS0FOVDMxQjtjQU1HK0gsR0FOSC9IO2NBTUgyWCxLQU5HM1g7Y0FPTSxjQURIK0gsR0FOTmhJO2NBT1M7OztjQUNtQyxXQVI5Q3hCLEVBT0tnekIsS0FEZUQ7Y0FFTSxnQkFSMUIveUIsRUFNUXdKLEdBQ1A2dEIsUUFEYUQ7YUFFUCw0QkFSUHAzQixFQU9IbVosS0FES0MsTUFBTTVQO1dBSWhCLDRCQUFZO2tCQUVWcXBCLE1BQU03eUIsRUFBRXdCLEdBQUdDO1dBQ2pCLEdBRGNEO2dCQUFHQzs7Z0JBSWtCd1ksR0FKbEJ4WTtnQkFJWXF4QixHQUpacnhCO2dCQUlNMDFCLEdBSk4xMUI7Z0JBSUErSCxHQUpBL0g7Z0JBSU5FLEdBSk1GO2dCQUdrQjBZLEdBSHJCM1k7Z0JBR2V3VSxHQUhmeFU7Z0JBR1MwMUIsR0FIVDExQjtnQkFHR2tULEdBSEhsVDtnQkFHSEUsR0FIR0Y7a0JBSXFCeVksTUFEQUU7aUJBR1Y7OEJBSFJ6RixHQUhBalQ7a0JBTVE7OztrQkFDWCxRQVBGekIsRUFHRDBCLEdBR0EwWDtrQkFDeUIsUUFQeEJwWixFQUdpQmdXLEdBR1YrYztpQkFDaUIsR0FEckJxRTttQkFJSSxJQUFORSxLQUpFRjttQkFJd0Isc0JBSDdCaDFCLEVBSk9zUyxHQU9zQixXQVYzQjFVLEVBR0swVSxHQUFNd2lCLEdBT1ZJLE1BSG1CbjNCO2lCQUVoQixZQUZOaUMsRUFKT3NTLEdBQU13aUIsR0FJUy8yQjtlQUtQOzhCQVJScUosR0FKSGhJO2dCQVlXOzs7Z0JBQ1gsVUFiRnhCLEVBWURtWixLQVJBeFg7Z0JBU3lCLFVBYnhCM0IsRUFZT2d6QixLQVJVRjtlQVNPLEdBRHJCdUU7aUJBSUksSUFBTkUsS0FKRUY7aUJBSXdCLHNCQUg3QnRlLElBVE92UCxHQVlzQixXQWhCM0J4SixFQUlLd0osR0FZSit0QixLQVpVSixJQVNTNUU7ZUFFaEIsWUFGTnhaLElBVE92UCxHQUFNMnRCLEdBU1M1RTtpQkFYdEIveEIsRUFGSWdCOztnQkFFSmhCLEVBRk9pQjtXQUVZLE9BQW5CakIsQ0FjMkM7a0JBRS9Dd04sT0FBT29CLEVBRVhxYTtXcEN0YVQsR29Dc2FTQTthQUVXO2NBRkl0cEIsRUFBZnNwQjtjQUFZclIsRUFBWnFSO2NBQVN2cEIsRUFBVHVwQjtjQUFNcm5CLEVBQU5xbkI7Y0FFVyxXQUpBcmEsRUFFTGhOO2NBR00sZUFMRGdOLEVBRUZsUCxFQUFHa1k7Y0FJRCxXQU5BaEosRUFFSWpQO2FBSUosR0FETHEzQjtrQkFIQXAxQixNQUVBMlcsT0FGUzVZLE1BSVRveUIsSUFDK0IsT0FMckM5SSxFQUs0QyxZQUh0QzFRLElBRkc3WSxFQUFHa1ksRUFJTm1hO2FBRUMsY0FKRHhaLElBRUF3WjtXQUxHO2tCQVNMemtCLFdBQVc5TjtXcEM5YXhCO2FvQ2tib0I7Y0FGSUc7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FFSyxlQUpJcEMsRUFFVG9DO2NBR00sZUFMR3BDLEVBRU5FLEVBQUdrWTtjQUlELGVBTklwWSxFQUVBRzthQUlKLEdBRExzM0IsS0FHVyxJQUFON1MsSUFITDZTLE9BR1csWUFKWDFlLElBRkc3WSxFQU1FMGtCLElBRkwyTjthQUdRLGNBTFJ4WixJQUVBd1o7V0FMRztrQkFXTDNmLFVBQVV4RDtXcEMxYnZCO2FvQzhiMEI7Y0FGRmpQO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBRVcsZ0JBSkhnTixFQUVSaE47Y0FFVzs7Y0FDTCxlQUxFZ04sRUFFTGxQLEVBQUdrWTtjQUlLLGtCQU5IaEosRUFFQ2pQO2NBSUU7O2dCQURYcTNCLEtBR2tCLGdCQUpiekQsR0FFQUUsSUFFSCxlQUpERCxHQUZFOXpCLEVBQUdrWSxFQUlMOGI7YUFGVSxTQUtLLEtBTFhILEdBRkY3ekIsRUFBR2tZLEVBSUQ2YjthQUdILGlCQUxERCxHQUVBRTtXQUxFO2tCQVlMZCxVQUFVM0osRUFBRXpnQjtlQUFGNnRCLE1BQUVqVDtXQUNsQjtnQkFEZ0JpVDs7Z0JBR0MxMkIsRUFIRDAyQjtnQkFHRnplLEVBSEV5ZTtnQkFHTDMyQixFQUhLMjJCOztnQkFBRXZELE9BR1BwekIsRUFBR2tZLEVBQUdqWSxFQUhDeWpCO2dCQUFGaVQ7Z0JBQUVqVDs7YUFFUCxPQUZPQSxJQUdtQztrQkFFbkRsYSxRQUFRd0csSUFBSXluQixHQUFHQztXQVlpQixtQkFaakJBLE1BWUYsZUFaREQsTUFDTXJ1QixRQUFHQztXQUNuQjtnQkFEZ0JEO2tCQUFHQztpQkFNVDtrQkFEOEJrcUIsS0FMckJscUI7a0JBS2lCdXBCLEdBTGpCdnBCO2tCQUthNHRCLEdBTGI1dEI7a0JBS1NDLEdBTFREO2tCQUtEbXFCLEtBTEZwcUI7a0JBS0YwTSxHQUxFMU07a0JBS040dEIsR0FMTTV0QjtrQkFLVm9MLEdBTFVwTDtrQkFNTixvQkFESm9MLEdBQXNCbEw7aUJBQ2xCLFNBQUp0RzttQkFFSSxJQUFKNlgsSUFBSSxXQVRKN0ssSUFNSWduQixHQUFzQkM7bUJBR3RCLFNBQUpwYztxQkFFMEI7cUNBTEkrWCxHQUFJVztzQkFLMUIsZUFMQXpkLEdBQUkwZDtzQkFMRnBxQjtzQkFBR0M7O21CQVNGLE9BRFh3UjtpQkFEVyxPQURYN1g7ZUFGTTthQURDLE9BSE1xRyxRQVc2QjtrQkFFbERGLE1BQU02RyxJQUFJeW5CLEdBQUdDO1dBU2lCLG1CQVRqQkEsTUFTRixlQVRERCxNQUNNcnVCLFFBQUdDO1dBQ2pCO2dCQURjRDtrQkFBR0M7aUJBTWY7a0JBRHNDa3FCLEtBTHZCbHFCO2tCQUttQnVwQixHQUxuQnZwQjtrQkFLZTR0QixHQUxmNXRCO2tCQUtXQyxHQUxYRDtrQkFLQ21xQixLQUxKcHFCO2tCQUtBME0sR0FMQTFNO2tCQUtKNHRCLEdBTEk1dEI7a0JBS1JvTCxHQUxRcEw7a0JBTVosNkJBRElvTCxHQUFzQmxMO2lCQUMxQjttQkFBeUIsb0JBUHZCMEcsSUFNTWduQixHQUFzQkM7bUJBQ0w7cUJBQ0c7cUNBRk1yRSxHQUFJVztzQkFFNUIsZUFGRXpkLEdBQUkwZDtzQkFMSnBxQjtzQkFBR0M7O21CQU1VOzs7aUJBRmY7O2FBREMsT0FISUEsT0FRNkI7a0JBRTVDNHFCO1dBQVc7YUFFaUIsSUFBdkJoMEIsV0FBSGlDLFdBQTBCLGNBQXZCakM7YUFBTSxpQkFBVGlDO1dBREcsUUFDaUM7a0JBRXRDeTFCOzs7O2VBRXlDO2dCQUE5QjEzQjtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFBdUMsYUFBcENsQyxFQUFHa1ksR0FBaUMsb0JBQTlCalk7O3dCQUFUaUM7O2FBREc7a0JBR1QwMUIsU0FBU3QzQixHQUNYLHNCQURXQSxFQUNNO2tCQU1maTFCLFFBQVEzNUIsRUFBRTJ0QjtXQUNaOzZCQUFtQkE7c0JBQUwscUNBQVFzTixFQUFFNzJCLEVBQUx1cEIsRUFBcUI7b0JBRDVCQTtvQkFBRjN0QixFQUNrQztrQkFFMUM0NUIsT0FBTzU1QixHQUFJLGVBQUpBLEVBbFlQdVIsTUFrWTBCO2tCQUV0QnNvQixZQUFhenlCO1dBQU8sR0FBUEE7YUFFa0MsSUFBdkNsSCxLQUZLa0gsS0FFUDRKLEVBRk81SixLQUVUaEQsRUFGU2dELEtBRVg2ekIsRUFGVzd6QixLQUVrQyxlQUF6QzRKLEVBQUU5UTthQUEwQixhQUFoQys2QixFQUFFNzJCLGtCcEMzZmpCLE9vQ3lmYXkxQjtXQUNHLFFBQytEO2tCQUV0RTVnQixPQUFPMFU7V0FDSSxtQkFESkE7V0FDSSxzQnBDOWZwQixPb0N5ZmFrTSx1QkFLd0I7a0JBRXhCQyxVQUFVcDFCLEVBQUV3STtlQUFGK0gsTUFBRTZTO1dBQ2xCO2dCQURnQjdTOzs7Z0JBR0hxSCxFQUhHckg7Z0JBR043USxFQUhNNlE7Z0JBR1QzTyxFQUhTMk87Z0JBQUV1aUIsT0FHUnB6QixFQUFHa1ksRUFBTmhXLEVBSFd3aEI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBR2tDO2tCQUU5Q2lTLGdCQUFpQjN5QjtXQUFPLEdBQVBBO2FBR2UsSUFEeEJsSCxLQUZTa0gsS0FFWDRKLEVBRlc1SixLQUViaEQsRUFGYWdELEtBRWY2ekIsRUFGZTd6QixLQUdlLGVBRDFCNEosRUFBRTlRO2FBQ087d0JBRGIrNkIsRUFBRTcyQjtvQ3BDdmdCakIsT29DcWdCYTIxQjtXQUNHLFFBRWdEO2tCQUV2REMsV0FBVzV5QjtXQUNJLG1CQURKQTtXQUNJLHNCcEMzZ0J4QixPb0NxZ0JhMnlCLDJCQU00QjtrQkFFaENFLFlBQVlDLElBQUl2TTtlQUNGb04sSUFERXBOLEVBQ0F2bUI7V0FBSTtnQkFBTjJ6QjtlQUdFO2dCQURDMTJCLEVBRkgwMkI7Z0JBRUF6ZSxFQUZBeWU7Z0JBRUgzMkIsRUFGRzIyQjtnQkFFTnowQixFQUZNeTBCO2dCQUdFLG9CQURMMzJCLEVBSEM4MUI7ZUFJSSxTQUVSMTFCO2lCQUFPLFFBQVBBLEdBQ0ssV0FKRkosRUFBR2tZLEVBQUdqWSxFQUZEK0MsR0FBRjJ6QixJQUVOejBCLEVBRlFjO3FCQUFGMnpCLElBRUcxMkI7O2VBQ0QsWUFETEQsRUFBR2tZLEVBQUdqWSxFQUZEK0M7OzttQ3BDOWdCekIsT29DeWZheXlCLHdCQThCc0I7O2lCQWxhMUJ0b0I7aUJBRUFxQjtpQkF3R0lpa0I7aUJBdEdBZjtpQkF5SkErRTtpQkE3TEo5RTtpQkFrTEllO2lCQStIQTlPO2lCQVlBK087aUJBMERKbnBCO2lCQWNBTDtpQkFwTEkvRjtpQkF1QkE4RjtpQkFNQStGO2lCQUlBRTtpQkE2RkFyQjtpQkFVQUY7aUJBWUE4RTtpQkEyQ0F1aEI7aUJBUUoyRDtpQkF2UUl4QjtpQkFLQUM7aUJBS0FDO2lCQUtBQztpQkFmQUg7aUJBS0FDO2lCQWdKQS9EO2lCQXBQQWxqQjtpQkFnRkFvbEI7aUJBL0RBSjtpQkFrQkFDO2lCQWtCQUM7aUJBa0JBQztpQkE2RkF2ckI7aUJBU0EySDtpQkF5TUprRTtpQkFhQStnQjtpQkFHQUM7aUJBekJBTjtpQkFHQUM7SUFsYkc7SUZxQkc7YUd0RVZxQyxnQkFBWSxjQUFvQjthQUVoQ0MsTUFBTXgzQixHQUFJLDBCQUFxQjthQUUvQnkzQixPQUFLejNCLEdBQUksVUFBSkEsVUFBNkI7YUFFbEMwM0IsS0FBS3YzQixFQUFFSCxHQUFJLFVBQU5HLEVBQUVILE1BQUksT0FBSkEsYUFBSSxRQUFtQzthQUU5QzIzQixJQUFJMzNCO01BQ04sU0FETUE7TUFDTjtZQUNNaUMsV0FBSkMsV0FGSWxDLE9BRUFpQyxHQUZBakMsMkJBRUprQztNQUNVLFdBQVc7YUFFckIwMUIsUUFBUTUzQjtNQUNWLFNBRFVBO01BQ1Y7WUFDTWlDLFdBQUpDLFdBRlFsQyxPQUVKaUMsR0FGSWpDLDhCQUVSa0M7TUFDVSxRQUFJO2FBRWQyMUIsSUFBSTczQjtNQUNOLFNBRE1BLEtBQ04sU0FDVyxJQUFUa0MsV0FBUyxPQUFUQSxHQUNTLFdBQVc7YUFFcEI0MUIsUUFBUTkzQjtNQUNWLFNBRFVBLEtBQ1YsU0FDVyxJQUFUa0MsV0FBUyxVQUFUQSxJQUNTLFFBQUk7YUFFYjYxQixXQUFTLzNCLEdBQUksYUFBSkEsUUFBYzthQUV2Qmc0QixTQUFPaDRCLEdBQUksT0FBSkEsSUFBUzthQUVoQmk0QixPQUFLejRCLEVBQUVRLEdBQUksY0FBTlIsRUFBRVEsS0FBbUI7YUFFMUJrNEIsT0FBSzE0QixFQUFFb08sSUFBSTVOLEdBQUksbUJBQVZSLEVBQUVvTyxJQUFJNU4sS0FBNEI7YUFJdkNtNEIsU0FBT240QixHQUFJLGdCQUFKQSxLQUFtQjthQUUxQmkxQixRQUFRNUwsRUFBRS90QixHQUFJLHFCQUFjNkUsR0FBSyxZQUFMQSxFQUFwQmtwQixFQUFpQyxFQUEvQi90QixFQUFrQzthQUU1Qzg4QixTQUFPcFgsR0FDRCxJQUFKaGhCLEVBQUksWUFDUixRQURJQSxFQURLZ2hCLEdBRVQsT0FESWhoQixDQUVIOzs7OztPQTdDQ3UzQjtPQU1BRztPQUVBQztPQUtBQztPQUtBQztPQUtBQztPQXJCQU47T0FFQUM7T0F3QkFNO09BRUFDO09BRUFDO09BRUFDO09BSUFDO09BRUFsRDtPQUVBbUQ7OzthQ2pDQUMsZ0JBQVksZ0JBSWY7YUFFR0MsUUFBTWpQLEdBQ1IsbUNBRWE7YUFFWCtILElBQUlqeEIsRUFBRWtwQjtNQUNSLFlBRE1scEIsS0FDTixLQURRa3BCO01BQ1I7Z0JBRFFBLDhCQUNKa1AsS0FESWxQLE9BQ0prUDtnQkFESWxQLGdCQUNKa1AsS0FESWxQLE9BQ0prUCxPQVlZO2FBS2RDLEtBQUtuUDtNQUNQLFNBRE9BLEtBQ1AsU0FFc0IsSUFBYm9QLGdCQUFhLE9BQWJBLFFBREEsYUFDb0I7YUFFM0JDLFNBQVNyUDtNQUNYLFNBRFdBLEtBQ1gsU0FFc0IsSUFBYm9QLGdCQUFhLFVBQWJBLFNBREEsUUFDeUI7YUFLaENFLE9BQUt0UDtNQUNQLFNBRE9BO01BQ1A7OztjQUtrQnJjLGFBTlhxYywyQkFNV3JjO1FBRmhCLFFBSktxYztRQUlMO01BRk8sYUFPQTthQUVQdVAsU0FBU3ZQO01BQ1gsU0FEV0E7TUFDWDs7O2NBS2tCcmMsYUFOUHFjLDJCQU1PcmM7UUFGaEIsUUFKU3FjO1FBSVQ7TUFGTyxRQU9LO2FBS1p3UCxPQVlFeFA7TUFBSyxhQUFMQSxVQVhlMFAsT0FBS1IsS0FXcEJsUDtNQVZGO1dBRHNCa1A7Y0FHYkUsUUFIYUYsUUFHSnZyQixLQUhJdXJCLFFBSWhCMXpCLE9BREc0ekI7YUFIUU0sS0FPSCxVQUhSbDBCLFNBRUssV0FGTEE7Y0FKV2swQixLQUlYbDBCLElBSmdCMHpCLEtBR0p2ckI7O1FBRFQsV0FGUStyQjtRQUVSLE9BRkVELE1BVzJEO2FBRXRFRSxXQUFTM1AsR0FDWCxhQURXQSxRQUNDO2FBRVY0UCxTQUFPNVAsR0FDVCxPQURTQSxJQUNEO2FBRU42UCxPQVFFMTVCLEVBQUU2cEI7TXRDNUhULElzQ3FIa0JrUCxLQU9UbFA7TUFOSjtXQURha1A7Y0FHSkUsUUFISUYsUUFHS3ZyQixLQUhMdXJCO1VBSVgsV0FHQS80QixFQUpPaTVCO2NBSElGLEtBR0t2ckI7O1FBRFQsU0FLYzthQUV2Qm1zQixPQVFFMzVCLEVBQUVrUCxPQUFLMmE7VUFQSTNrQixLQU9UZ0ssT0FQYzZwQixLQU9UbFA7TUFOVDtXQURrQmtQO1VBSUw7V0FESkUsUUFIU0Y7V0FHQXZyQixLQUhBdXJCO1dBSUwsa0JBR1gvNEIsRUFQV2tGLEtBR0orekI7V0FISS96QjtXQUFLNnpCLEtBR0F2ckI7O1FBRFQsT0FGSXRJLEtBT29CO2FBRWpDMDBCLFNBQVNDLEdBQUdDO01BQ2QsYUFEV0Q7TUFDWDtRQUNFLFNBRllDO1FBRVo7a0JBRllBOzs7O2tCQUFIRDs7Ozs7O2tCQUFHQzs7a0JBQUhEO2tCQVNQLFFBVE9BO2tCQUFHQyxRQUFIRCxNQUFHQyxRQUFIRCxNQUFHQyxRQUFIRCxNQUlQLFFBSk9BO2lCQVlDO2FBSVZFLFNBQU9sUTtNQUNULFNBQVF0TyxJQUFJclk7UUFBTyxHQUFQQTtjQUVPdkMsRUFGUHVDLEtBRVVzSyxLQUZWdEs7VUFFa0MsVUFBM0J2QyxpQnRDM0p0QixPc0N5Slc0YSxJQUVjL047UUFEWCxRQUM0QztNQUZ2RCxTQURTcWM7TUFDVCxzQnRDekpILE9zQ3lKV3RPLGVBSUc7YUFFVHllLFVBQVFuUSxFQUFFL3RCLEdBQUkscUJBQWM2RSxHQUFLLFdBQUxBLEVBQXBCa3BCLEVBQWlDLEVBQS9CL3RCLEVBQWtDO2FBRTVDbStCLFNBQU96WSxHQUNELElBQUpxSSxFQUFJLFlBQ1IsVUFESUEsRUFES3JJLEdBRVQsT0FESXFJLENBRUg7Ozs7O09BdklDZ1A7T0FXQWpIOztPQStCQXVIO09BV0FDO09BWEFEO09BYkFIO09BS0FFO09BTEFGO09BdkJBRjtPQTZEQU87T0FjQUc7T0FHQUM7T0FHQUM7T0FVQUM7T0FVQUM7T0FnQkFHO09BT0FDO09BRUFDOzs7OzthQ2pJQUM7TUFBUSw2QkFFREEsNEJBREMsUUFDZTthQUN2QjdEO01BQU8sNkJBRUFBLDBCQURDLFFBQ2E7YUFFckI4RCxVQUFVcjRCO01BQ0gsYUFER0EsWUFDWixxQkFEWUEsT0FDSCxpQkFBcUQ7YUFHeERzNEIsU0FBaURGLE1BQU05aEI7TXZDM0NoRSxJdUMyQ2dFd007TUFBSztrQkFBTEE7U0FBSyxPQUFMQTs7WUFPOUMsSUFESnVTLEdBTmtEdlMsT0FNdERzUyxHQU5zRHRTLE9BTzlDLGVBUHdDc1YsTUFNaERoRDtZQUNRO2tCQVA4Q3RTLElBTWxEdVM7O2NBQ0k7b0JBQ0FrRCxhQUFIOTJCLDBCQUFHODJCLElBRkpsRDtjQUlEOztZQWlCRTtlQTNCaUR2UzthQTJCakQsa0JBQUw1a0I7YUFBSyxpQkFBTEEsa0JuQjNDTHVNLGlCbUIyQ0t2TTthQTNCc0Q0a0I7Ozs7Ozt1QkFjMUQsSUFEc0IwVixZQUN0QixzQkFEc0JBLElBYm9DMVY7Y0FZakM7WUFJYiwrQkFoQndDc1Y7WUFnQnhDLFlBRUEsSUFBTEssZUFBSyxVQUFMQSxJQWxCbUQzVjtZQWlCaEQ7OztZQUtWLElBRE05aUIsRUFyQm9EOGlCO1lBc0IxRCxHQURNOWlCLGFBQ2lCLFVBRGpCQTtZQUM0QixTQUQ1QkEsS0FFYTtZQURuQixJQUVNM0IsRUFBSixzQkFISTJCO1lBR0osT0FISUE7WUFHSixVQUFJM0IsRUF4Qm9EeWtCOztRQUtuQyxPQUxtQ0EsSUEyQnBCO2FBR25DNFYsVUFBNkNoNkI7TUFFcEQ7aUJBRm9EQTtRQUVwRDtTQUNZOztTQURaO2tCQUVrQixJQUFUK0MsVUFBUyxVQUFUQTs7WUFFTyxJQUNWNlUsRUFEVSxTQU5vQzVYO1lBTXBDLFVBQ1Y0WDthQUNVOztjQUZBLFNBQ1ZBLE1BQW9CLElBQWRraUIsSUFBTmxpQixLQUFvQixPQUFwQkEsRUFBb0IsVUFBZGtpQjtjQUVEOztZQUVFOzsrQkFBTHQ2QjthQUFLLGtCQUFMQSxrQm5CekRMdU0saUJtQnlES3ZNO1lBQWU7Ozs7cUJBQ0csSUFBTnU2QixZQUFNLE9BQU5BO1lBQ0EsSUFBSjU1QixFQUFJLG1CQWJnQ0g7WUFhaEMsYUFBSkc7WUFBSSxPQUFKQTs7WUFFWixJQURNbUI7WUFDTixHQURNQSxhQUNpQixVQURqQkE7WUFDNEIsYUFENUJBO3NCQWQwQ3RCO3dCQWlCM0Msc0JBSENzQixhQUdtQzthQUcxQzI0QjtNQUFPLFVBRUcsSUFBTGo2QixXQUFLLGlCQUFMQSxHQURHLFFBQ2E7YUFHakJrNkIsVUFBeUNsNkI7TUFDL0M7aUJBRCtDQTtRQUMvQzs7a0JBQ2tCLElBQU40WCxVQUFNLE9BRjZCNVgsYUFFN0IsT0FBTjRYLEVBQU07Ozt3QkFDZSxPQUhjNVgsYUFHZDs7O1lBRTdCLElBRE1zQjtZQUNOLEdBRE1BLGFBQ2lCLFVBRGpCQTtZQUM0QixhQUQ1QkE7c0JBSnFDdEI7MENBSXJDc0I7O1FBSFYsVUFRVSxVQVRxQ3RCO1FBU3JDO1FBQ0ksU0FDYTthQUd6Qm02QjtNQUFPLFVBRU0sSUFBUnRFLGNBQVEsaUJBQVJBLE1BREcsUUFDbUI7YUFFdkJ1RSxVQUFVdDZCLEVBQUVFO01BQ2xCLE9BRGdCRjtRQUdSLG9CQUhVRTtRQUdWO1VBRUYsSUFERytDO1VBQ0gsVUFMWS9DO1VBS1o7V0FDaUIsa0JBTlBGLFVBQUVFO1dBTUs7Ozt1QkFGZCtDLEVBRUVzM0IsT0FGRnQzQixFQUVNNlUsR0FBRzJlO1FBQ04sWUFQTXYyQjtNQUNILFlBREdBLE9BT087YUFVdkJzNkIsTUFBTXg2QjtNdkNySVg7UXVDdUllOztTQVJPLGdCQU1YQSxFQUVEc2tCO1NBUlk7OztpQkFRWkEsU0FSSy9nQjtRQUFPLFNBQVZ1VTtRQUFVLE9BQWR5aUI7TUFPSzthQUdScnRCLEtBQUtoTjtNQUNELGlCQURDQTtNQUNELFVBQ00sSUFBTCtDLFdBQUssS0FGTC9DLEdBRUssT0FBTCtDO01BQ0csZUFBYTthQUdyQnczQixRQUFNdjZCLEdBQ0YsaUJBREVBLEdBQ0YsU0FDTSxnQkFDRixRQUFFO2FBR1Z3NkIsT0FBS2g3QixFQUFFaTdCO01BRVA7UUFBTSxpQkFGQ0E7UUFFRCxjQUNDMTNCLFdBQUssS0FITDAzQixNQUdzQixXQUh4Qmo3QixFQUdFdUQ7UUFDRyxTQUVIO2FBS1AyM0IsS0FBS2w3QixHQUFJLHVCQUFKQSxLQUF5RDthQUU5RG03QixVQUFRLzRCO01BQ1Y7TUFBd0IsbUNBQXFCekIsRUFBRXlCLEdBQUssVUFBUHpCLEVBQUV5QixFQUFpQixFQUR0REEsU0FDaUU7YUFHekVnNUIsVUFBVTU2QjtNQUNaLElBQUkwNUI7TUFBSjs7aUJBUUUsSUFBSWgzQixFQVJGZzNCO2lCQVFGLE9BQUloM0IsSUFBSixzQkFUVTFDOzJCQUNSMDVCLGNBVXFCLGdCQVhiMTVCLEVBU04wQzsyQkFHSyxFQUFDO2FBR1ZtNEIsV0FBUzc2QjtNQUNYLElBQUkwNUI7TUFBSjs7aUJBRUUsSUFBSWgzQixFQUZGZzNCO2lCQUVGLE9BQUloM0IsSUFBSixxQkFIUzFDOzJCQUNQMDVCLGNBSXFCLGVBTGQxNUIsRUFHTDBDOzJCQUdLLEVBQUM7YUFHVm80QixXQUFXLzJCO01BRXlCLHFCQUZ6QkEsR0FFeUIsK0JBQXFDO2FBS3pFZzNCLEtBQUt6L0IsRUFBRTBFLEdBQTBDLGNBQTFDQSxHQUFrQyx1QkFBcEMxRSxVQUFvRDthQUN6RDAvQixNQUFNMS9CLEVBQUUwRSxHQUFzQyxrQkFBeEMxRSxFQUF3QyxLQUF0QzBFLEtBQThDO2FBQ3REaTdCLE1BQU0zL0IsR0FBSSxrQkFBSkEsTUFBOEM7YUFFcEQ0L0IsS0FBSzE3QixFQUFFUTtNQUNUOzs7Ozs7bUJBQXVELGNBRDlDQSxHQUNpQyxlQUFLLFdBRHhDUixXQUNzRCxLQUFJO2FBRS9EMjdCLE1BQU0zN0IsRUFBRVE7TUFBSTs7Ozs7O21CQUFpRCxjQUFyREEsR0FBK0MscUJBQWpEUixVQUE2RCxLQUFJO2FBQ3ZFNDdCLE1BQU01N0I7TUFBSSxzQ0FBMkMscUJBQS9DQSxZQUErRDtRQUVyRTY3QjthQUNBQyxNQUFNOTdCO01BQUksc0NBQXlDLHVCQUE3Q0EsS0FBbUQsS0FBRzthQVc1RCs3QixVQUF3RC83QjtNQUF4RDtPQUVVOztPQUZWOztjQUdVb1ksV0FBSDdVO1VBQ0w7VUFDQSxXQUxzRHZELEVBR2pEdUQ7VUFHTDtVQUNBLFVBUHNEdkQsRUFHOUNvWTtVQUlSOztjQUVRK2UsWUFBSkQ7VUFDSjtVQUNBLFVBWHNEbDNCLEVBU2xEazNCO1VBR0o7VUFDQSxVQWJzRGwzQixFQVM5Q20zQjtVQUlSO2dCQUVTO2dCQUNEO2lCQUNHLGlDQUFzQjthQXhCL0I2RSxLQUFnRGg4QixFQUFFUTtNQUN4RDtNQUNBLFVBQVUsTUFGOENBO01BR3hEO01BQ0EsVUFKc0RSLEVBSTFDLEtBSjRDUTtNQUt4RDs2QkFDZ0I7Ozs7OztPQTFEZDA2QjtPQUVBQztPQUlBQztPQWVBQztPQVNBQztPQXpDQU47T0FaQXh0QjtPQU1BdXRCO09BbERBTjtPQW1CQUU7T0FoRkFUO09BcUdBWTtPQWdFQVM7T0FDQUM7T0FDQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FJSUU7O2FDckxKQyxTQUFPMzdCO01BQ1Y7Z0JBRFVBO09BRVYsd0JBREk4UTtPQUVKLG9CQURJQztNQUNKLFVBQUk3USxJQURBNlEsSUFDQTdRLEVBQ3NEO2FBRXZEMDdCLFNBQVNwNkIsR0FBSSxrQkFBSkEsWUFBMEM7YUFDbkRxNkIsV0FBU3I2QixHQUFJLFdBQUpBLFlBQW1DO2FBRTVDczZCLE1BQUl0NkIsRUFBRThCLElBQUlDO014Q3hDZixRd0N3Q1dELFlBQUlDLFdBQU4vQixPQUFNK0IsV0FBSkQ7T0FHSCxrQkFIQzlCLEtBQUU4QixJQUFJQztNQUVQLGtDQUNpQzthQUdwQ3c0QixPQUFLcFYsSUFBSXhLLE9BQU9NLElBQUlQLE9BQU8zWTtNeEM5Q2hDOzs7UXdDOENnQ0E7Ozs7UUFBbEI0WTs7O1VBQUp3SyxTQUFzQnBqQixXQUFsQjRZOzs7O1FBQVdEOzs7K0JBQUpPLE9BQVdsWixXQUFQMlk7T0FLcEIsdUJBTEt5SyxPQUFJeEssT0FBT00sSUFBSVAsT0FBTzNZO01BR3hCLG1DQUUrQzthQUdsRHk0QixNQUFJeDZCLEVBQUU4QjtNeEN0RFgsUXdDc0RXQSxVQUFGOUIsUUFBRThCLEtBR0gsNkJBSEM5QixLQUFFOEI7TUFFUCxrQ0FDaUM7YUFHaEMyNEIsU0FBT3o2QixHQUFJLE9BQUpBLElBQWM7YUFFckIwNkIsUUFBTTE2QixHQUFJLGlCQUFlO2FBRXpCMjZCLE1BQU0zNkI7TUFDUixnQkFEUUEsS0FDUiw0QkFEUUEsTUFDUixRQUVpQzthQVUvQjQ2QixPQUFPNTZCLEVBQUU2NkI7TUFDWCxZQURTNzZCLEtBQ1QsUUFEU0EsS0FDVCxXQUNJKzZCOztXQUNBL2UsY0FGQThlLFVBRE9EO1VBSXdCLGlCQUQvQjdlO1FBRUosdUJBRklBO1NBRXFDLElBSnJDOGUsVUFET0Q7VUFPSjs7VUFDQTtRQUVVLElBQWJHLFdBQWEsa0JBUGJoZjtRQVVKLEtBYlNoYyxPQVVMZzdCLGFBVktoN0I7UUFhVCxPQUhJZzdCO1FBR0osT0FWSWhmO1FBVUosSUFiU2hjLE9BQUU2NkIsYUFBRjc2QjtVQWlCVCxJQWhCSTg2QixVQURPRCxhQUFGNzZCLEtBa0JUOztzQ0FBRTthQW9DQWk3QixTQUFTajdCLEVBQUVvQjtNQUNiLElBQUk4NUIsSUFET2w3QjtNQUNYLEdBRFdBLFFBQ1BrN0IsSUFDb0IsT0FGYmw3QjtNQUV1QixzQkFGdkJBLEtBQ1BrN0IsSUFEUzk1QjtNQUVxQixPQUQ5Qjg1QjtNQUM4QixRQUViO1FBRW5CQyw4QkFDQUM7YUFFSUMsZ0JBQWdCcjdCLEVBQUUwTTtNQUN4QjtZQUFJd3VCLElBRGtCbDdCO1FBQ3RCLEdBRHNCQSxRQUNsQms3QixJQUNvQixPQUZGbDdCLEVBSHBCbTdCO1FBSUYsSUFFSTM4QixFQUFJLGdCQUhjd0IsS0FDbEJrN0IsSUFEb0J4dUI7UUFHaEIsU0FBSmxPLEdBRUUsT0FMZ0J3QixFQUhwQm03QjtRQVNHLE9BTERELE1BRUExOEI7UUFHQyxTQUF1QjthQUV0Qjg4QixtQkFBbUJ0N0IsRUFBRTBNO01BQzNCO1lBQUl3dUIsSUFEcUJsN0I7UUFDekIsR0FEeUJBLFFBQ3JCazdCLElBQ29CLE9BRkNsN0IsRUFWdkJvN0I7UUFXRixJQUVJNThCLEVBQUksbUJBSGlCd0IsS0FDckJrN0IsSUFEdUJ4dUI7UUFHbkIsU0FBSmxPLEdBRUUsT0FMbUJ3QixFQVZ2Qm83QjtRQWdCRyxPQUxERixNQUVBMThCO1FBR0MsU0FBdUI7YUFFdEIrOEIsbUJBQW1CdjdCLEVBQUUwTTtNQUMzQjtZQUFJd3VCLElBRHFCbDdCO1FBQ3pCLEdBRHlCQSxRQUNyQms3QixJQUNvQixPQUZDbDdCLEVBbEJ2Qm83QjtRQW1CRixJQUVJNThCLEVBQUksbUJBSGlCd0IsS0FDckJrN0IsSUFEdUJ4dUI7UUFHbkIsU0FBSmxPLEdBRUUsT0FMbUJ3QixFQWxCdkJvN0I7UUF3QkcsT0FMREYsTUFFQTE4QjtRQUdDLFNBQXVCO2FBRTFCZzlCLGNBQWN4N0IsRUFBRXRCLEVBQUUrOEIsT0FBTzE1QjtNQUMzQixTQURvQjA1QjtNQUNwQjs7OzthQUQyQjE1Qjs2Q0FBVHJELEtBQVNxRCxXQUFQMDVCO01BRWY7TUFETCxJQUVJQyxhQUhZMTdCLE9BQVcrQjtNQUV5QixHQUZwQy9CLE9BR1owN0IsYUFDNEIsT0FKaEIxN0IsRUFBVytCO01BSzNCLGlCQUxrQnJELEVBQUUrOEIsT0FBSno3QixVQUFXK0I7TUFLM0IsT0FGSTI1QjtNQUVKLFFBQzBCO2FBRXhCQyxhQUFhMzdCLEVBQUV0QixFQUFFKzhCLE9BQU8xNUI7TUFDVixxQkFERC9CLEVBQ0MscUJBREN0QixHQUFFKzhCLE9BQU8xNUIsSUFDMkI7YUFFbkQ2NUIsV0FBVzU3QixFQUFFdEI7TUFDZiw4QkFEZUEsR0FDZixhQURhc0IsT0FDVCtCO01BQUosR0FEYS9CLE9BRVQwN0IsYUFDNEIsT0FIbkIxN0IsRUFDVCtCO01BR0osaUJBSmVyRCxJQUFGc0IsVUFDVCtCO01BR0osT0FGSTI1QjtNQUVKLFFBQzBCO2FBRXhCRyxVQUFVNzdCLEVBQUV0QixHQUFpQixrQkFBbkJzQixFQUFtQixxQkFBakJ0QixHQUEyQzthQUV2RG85QixXQUFXOTdCLEVBQUUrN0IsSUFDZixvQkFEYS83QixFQUFFKzdCLGNBQ3VCO2FBK0JwQ0MsWUFBWWg4QixFQUFFeUMsR0FBR1Y7TUFDbkIsU0FEbUJBLFlBQ25CLGtDQURtQkE7TUFFakI7TUFiRixHQVdjL0IsZUFBSytCLFNBWGlCLE9BV3RCL0IsRUFBSytCO01BQ25CLElBNUJxQms2QixlQUFjbjZCLElBMkJyQjlCLEtBM0IwQms4QixRQTJCckJuNkIsSUFYNkIsS0FXbEMvQjtNQTFCWjtpQkFEc0NrOEI7VUFHNUIsSUFBSjc5QixFQUFJLE1Bd0JJb0UsUUEzQm1CWCxJQUFLbzZCO1VBRzVCLFNBQUo3OUI7WUFFQzs0QkFMWTQ5QixlQUdiNTlCO2FBRUMsTUFMMEJ5RCxNQUczQnpEO2FBRUMsVUFMK0I2OUIsVUFHaEM3OUI7YUFIYTQ5QjthQUFjbjZCO2FBQUtvNkI7O1lBMkIxQmw4QixPQTNCT2k4QixxQkEyQlBqOEI7VUFIZCxPQUdjQSxPQTNCT2k4Qjs0QkEyQkZsNkIsSUFNSDtVQUNoQjtzQ0FBRTthQUVBczZCLGNBQWMxNkIsR0FBRzNCLEdBQ25CLGNBRGdCMkIsR0FBRzNCLFlBQ1k7YUE0QzdCczhCLGVBQWV0OEIsRUFBRTlCLEVBQUVRO01BQ3JCLGdDQURxQkEsR0FFUDg5QixZQUFTN2U7TUFDckI7V0FEcUJBLE1BakJGNGU7VUFtQlgsSUFlSkUsUUFmSSxnQkFKVy85QixFQUVFaWY7VUFFYixVQWVKOGU7WUFkb0IsVUFIWkQ7Y0FJUCxTQU5VeDhCLEVBbUJYeThCO2NBYkMsUUFKZ0I5ZSxZQUFUNmUsWUFBUzdlOztZQU9oQixJQXhCUW9QLE1BaUJRcFA7WUFoQnZCLEdBRHFCNGUsU0FBTnhQLE1BQ007WUF1QmQsSUF0QkQsd0JBYWVydUIsRUFmTnF1QjtzQkFsQk0yUDtjQTRCbEIsUUFWWTNQLGNBUmYsNEJBdUJxQnJ1QixHQXZCTDZmO2NBQ2Q7bUJBRGdCb2UsU0FBRnBlO3FCQWtCVHFlLEtBbEJXRDs7a0JBRVYsMEJBcUJhaitCLEVBdkJMNmY7a0JBRVI7Ozs7Ozs7Ozs7K0JBQzBDLFFBSGxDQTtrQkFFUixJQWdCRHFlLEtBbEJTcmU7K0JBbUJiLE1BSWtCN2YsRUFmTnF1QixNQVVSNlAsT0FWUTdQLFdBVVI2UDs7O1loQ3VRRDtjZ0M1UUgsUUFMWTdQLGNBS1o7Y0FoQ1MsVUFTUzJQOzs7bUNBTmQ7Y0E2QkosSUF0QkgsMEJBZ0NxQmgrQixHQWhDTHUyQixNQUFFajdCO2NBQ2hCO21CQURrQjJoQixPQUFGM2hCLEVBQ0M7Z0JBQ2QsbUJBOEJnQjBFLEVBaENIMUUsT0FERzBpQztrQkFHSyxRQUZSMWlDLFVBRVEsSUFGVmk3QixnQkFBRWo3QjtnQkFHYixtQkE2QmdCMEUsRUFoQ0gxRTtrQkFLWCxRQUxXQTtnQkFJZCxTQUpZaTdCO2tCQUlTLFFBSlBqN0IsVUFJTyxJQUpUaTdCLGdCQUFFajdCOzs7cUJBd0JmLE1BUWtCMEUsRUFoQ0h3ZSxTQWlCSDZQLG9CQWpCRy95Qjs7WUF5Q1gsSUFDV2dqQyxrQkFBUEM7WUFDSixXQVhVajlCLEVBV0csV0FYRDlCLEVBVVIrK0I7WUFESixJQVBPVCxZQUFTN2UsSUFRTHFmOztVQUdDLFVBWExSO1lBWVAsU0FkVXg4QjtZQWVWLFNBZlVBLEVBbUJYeThCO1lBSkMsUUFiZ0I5ZSxZQUFUNmUsWUFBUzdlOztvQkFpQmpCOGU7WUFEQyxTQWhCZ0I5ZSxZQUFUNmUsU0FpQlJDLFFBakJpQjllO1VBa0JoQixTQXBCVTNkLEVBbUJYeThCO1VBZkksSUFnQkgsS0FsQmdCOWUsWUFBVDZlLFNBaUJSQyxRQWpCaUI5ZTs7UUFxQnJCLGdCQXJCWTZlO1FBcUJaLFlBQXdCLFNBdkJUeDhCLEVBRUh3OEIsZUFzQkg7YUFFVFUsU0FBU2w5QixFQUFFK0I7TUFDUyxRQURUQSxVQUFGL0IsT0FBRStCLE1BSVQsT0FKU0EsSUFJVDtNQUZBLHVDQUVpQjthQUluQm83QixTQUFPbjlCO01BQ1QsU0FBUXlaLElBQUl6ZjtRQUVWLEdBSE9nRyxRQUNHaEcsRUFFYztRQUV0Qiw0QkFMS2dHLEtBQ0doRyxHQUlSLEtBSlFBO1FBS0ssVUFEVDZFLGlCeENyVFgsT3dDaVRXNGEsZ0JBS21CO01BTDNCOzRCeENqVEgsT3dDaVRXQSxlQU9IO2FBRUgyakIsVUFBUXA5QjtNQUNWLFNBQVF5WixJQUFJemY7UUFFVixHQUhRZ0csUUFDRWhHLEVBRWM7UUFFdEIsNEJBTE1nRyxLQUNFaEcsR0FJUixLQUpRQTtRQUtTLGFBTFRBLEVBSUo2RSxrQnhDL1RYLE93QzJUVzRhLGdCQUt1QjtNQUwvQjs0QnhDM1RILE93QzJUV0EsZUFPSDthQUVINGpCLFVBQVFyOUIsRUFBRStMO01BQWUsMkJ4Q3BVOUIsT3dDbUlLa3ZCLFNBaU1RajdCLFNBQUUrTCxJQUErQjthQUV6Q3V4QixTQUFPdGpDLEdBQ0QsSUFBSmdHLEVBQUksYUFDUixVQURJQSxFQURLaEcsR0FFVCxPQURJZ0csQ0FFSDthQWFDdTlCLFNBQVN2OUIsRUFBRW5CO01BQ2IsSUFBSTY4QixhQURPMTdCO01BQ1gsR0FEV0EsT0FDUDA3QixhQUM0QixPQUZyQjE3QjtNQUUrQixzQkFGL0JBLFVBQUVuQjtNQUU2QixPQUR0QzY4QjtNQUNzQyxRQUVoQjthQUV4QjhCLGFBQWF4OUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QitCLGFBQWF6OUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QmdDLGFBQWExOUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QmlDLGFBQWEzOUIsRUFBRW5CLEd4QzlXcEIsT3dDNFZLMitCLGFBa0JheDlCLEVBQUVuQixFQUNzQzthQUVyRCsrQixhQUFhNTlCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGFBRDdCbFosVUFyQmYyK0IsYUFxQmF4OUIsRUFBRStYLElBQ3NDO2FBRXJEOGxCLGFBQWE3OUIsRUFBRW5CLEd4Q3BYcEIsT3dDa1dLNCtCLGFBa0JhejlCLEVBQUVuQixFQUNzQzthQUVyRGkvQixhQUFhOTlCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGlCQUQ3QmxaLEdBQ3FDLG9CQUR2Q21CLEVBQUUrWCxJQUNzQzthQUVyRGdtQixhQUFhLzlCLEVBQUVuQixHeEMxWHBCLE93Q3dXSzYrQixhQWtCYTE5QixFQUFFbkIsRUFDc0M7YUFFckRtL0IsYUFBYWgrQixFQUFFbkI7TUFDNkIsSUFEN0JrWixJQUM2QixpQkFEN0JsWixHQUNxQyxvQkFEdkNtQixFQUFFK1gsSUFDc0M7Ozs7T0EvVnJEb2lCO09BTUFDO09BQ0FDO09BRUFDO09BTUFDO09BUUFDO09BTUFDO09BRUFDO09BRUFDO09BaUtBMEI7T0F1RUFhO09BcktBakM7T0FTSUk7T0FnQkFFO09BUkFEO09BMkJKTTtPQU9BQztPQWxCQUw7T0FRQUc7T0FrR0FXO09BdEZBUjtPQWdDQUU7T0F3RkFtQjtPQVVBQztPQVVBQztPQUVBQztPQWdCQUM7O09BTUFDO09BcUJBSTtPQUhBRDtPQWxCQUg7T0FxQkFJO09BSEFEO09BWkFGO09BcUJBSztPQUhBRDtPQVpBSDtPQXFCQU07T0FIQUQ7O2FwQ2xXQUUsdUJBQXFCLG1CQUFvQjthQUd6Q0MsZ0JBQWdCeGdDLFNBQVMwRDtNQUMzQixZQUQyQkEsWUFDM0IsV0FEMkJBO01BRzNCO2VBSGtCMUQ7ZUFFZHlnQztlQUVGLFlBQTBCLGVBSlZ6Z0MsU0FFZHlnQyxXQUF3QkMsTUFFdUM7YUFFakVDLGdCQUFnQjNnQyxVQUNsQixnQkFEa0JBLFNBQ007YUFHdEI0Z0MsYUFBYTVnQztNQUNDLGtDQUNoQjFEO01BQ0U7O1VBRkV1a0MsV0FDSnZrQyxFQUVJLFlBQTBCLGdCQUpmMEQsU0FFZjFEO1FBQ0UsU0FERkE7O1FBSUEsNEJBTEl1a0MsWUFLNEI7YUFHOUJDLGVBQWU5Z0MsU0FBUzBEO01BQzFCLFlBRDBCQSxZQUMxQixXQUQwQkE7TUFHYiw4QkFISTFELFNBRWJ5Z0MsV0FBd0JDLFNBQzhCO2FBYXhESyxlQUFlQztNQUFVLEdBQVZBLFNBRUQsSUFBVEMsTUFGVUQsV0FFRCxZQUFUQyxPQURHLFFBQ2dDO2FBU3hDQywrQkFHQTVnQyxJQUFJNmdDO01BQU8sVUFBWDdnQztPQUFXLE9BQVhBO2dCQUVBLGFBRkk2Z0M7Z0JBSUosYUFKSUE7Z0JBZ0NKLGNBaENJQTtpQkFzQ0osY0F0Q0lBOztPQUFPLE9BQVg3Z0M7Z0JBTUEsSUFEZTBnQyxRQUxmMWdDLE9BTTBCLDRCQURYMGdDLFNBTFhHOztVQVFKLElBRG9CQyxVQVBwQjlnQyxPQVErQiw0QkFEWDhnQyxXQVBoQkQ7O2NBU2dCRSxVQVRwQi9nQyxPQVNhbEMsTUFUYmtDO1VBVThCLGFBRGpCbEMsTUFDaUIsZUFEVmlqQyxhQVRoQkY7O2NBV2tCRyxVQVh0QmhoQyxPQVdlL0IsUUFYZitCO1VBYWlCLGFBRkYvQixRQUVFLGVBRksraUMsYUFYbEJIOztjQWNzQkksVUFkMUJqaEMsT0FjbUI1QixRQWRuQjRCO1VBZ0JxQixhQUZGNUIsUUFFRSxlQUZLNmlDLGFBZHRCSjs7Y0FpQmtCSyxVQWpCdEJsaEMsT0FpQmV6QixRQWpCZnlCO1VBbUJpQixhQUZGekIsUUFFRSxlQUZLMmlDLGFBakJsQkw7O2NBb0JvQk0sU0FwQnhCbmhDLE9Bb0Jlb2hDLFVBcEJmcGhDO1VBVDRCLEdBNkJKbWhDLFNBM0JYLFNBMkJXQSxvQkEzQm5CRTtVQThCSyxpQ0FIS0QsZ0JBcEJYUDs7VUF5QkosSUFEYVMsVUF4QmJ0aEMsT0F5QndCLDRCQURYc2hDLFdBeEJUVDs7Y0EwQnlCL2hDLE1BMUI3QmtCLE9BMEJvQnVoQyxVQTFCcEJ2aEM7d0JBMEJvQnVoQyxVQUFTemlDLE1BMUJ6QitoQzs7Y0E0QjJCN2hDLFFBNUIvQmdCLE9BNEJzQndoQyxVQTVCdEJ4aEM7d0JBNEJzQndoQyxVQUFTeGlDLFFBNUIzQjZoQzs7Y0FpQzhCbmhDLFNBakNsQ00sT0FpQ3VCTCxVQWpDdkJLO3dCQWlDdUJMLFVBQVdELFNBakM5Qm1oQztpQkFvQ0osSUFEeUJoaEMsUUFuQ3pCRyxPQW9DQSxjQUR5QkgsUUFuQ3JCZ2hDLE1Bc0NpQzthQTBHckNZLHdCQUF3Qi9pQyxPQUMxQixhQUQwQkEsY0FPWDthQTZCYmdqQyxjQUFjQztNQUErQiw4QkFBL0JBLFdBQXVEO2FBR3JFQyxrQkFBa0J6OEIsSUFBSTA4QjtNQUN4QjtnQ0FEb0IxOEI7T0FDcEIsUUFEb0JBLFNBQUkwOEI7T0FDeEIsS0FBSTk5QixNQUNBKzlCO01BREo7UUFHZ0I7dUJBSFovOUIsWUFDQSs5QjtTQUdGLDBCQURJOWpCO1FBRUosS0FOa0I3WSxTQUtkNDhCLFVBSkZoK0I7UUFLRixTQURJZytCO1FBRFU7OztNQVBZLFdBVzNCO2FBR0NDLGdCQUFnQjc4QixJQUFJL0I7TUFDdEIsa0JBRGtCK0I7TUFFbEIsZUFGa0JBLGNBQUkvQjtNQUV0QixTQUZrQitCO01BRWxCLFFBQ3NCO2FBR3BCODhCLGtCQUFrQjk4QixJQUFJekU7TUFDeEIsSUFBSXdoQyxRQUFKLHNCQUR3QnhoQztNQUV4QixrQkFGb0J5RSxJQUNoQis4QjtNQUVKLE9BSHdCeGhDLElBQUp5RSxjQUNoQis4QjtNQUVKLFNBSG9CLzhCLFNBQ2hCKzhCO01BRUosUUFDNEI7YUFHMUJDLGdCQUFnQmg5QixLQUNsQixrQkFEa0JBLGdCQUNrQjthQUtsQ2k5QixjQUFjdGtDO01BQVEsT0FBUkE7O2VBRW9COztlQUF3Qjs7Z0JBQ2hEOztnQkFBd0I7Ozs7Z0JBRkU7Z0JBQzFCLFdBQzJCO2FBSXJDdWtDLGNBQWdCN1YsSUFBUTl0QjtNQUFRLEdBQWhCOHRCLElBQUcsUUFBSEEsVUFBR0MsYUFBSDZWO01BQWdCLE9BQVI1akM7ZUFDYjtlQUFpQjtlQUNqQjtlQUFpQjtlQUNqQjtlQUFpQixPQUhaNGpDO2VBSUw7ZUFBaUI7Z0JBQ2hCLFVBQUc7YUF5RWZDLGFBQWFwOUIsSUFBSXE5QjtNQUFRLE9BQVJBO2VBQ1IsdUJBRElyOUI7ZUFFSjtnQkFDQSx1QkFISUEsUUFHbUI7YUFHaENzOUIsb0JBQW9CdDlCLElBQUl1OUI7TUFDMUIsT0FEMEJBLFNBQ1QsZ0JBREt2OUIsUUFBSXU5QixRQUNjO2FBSXRDQyxlQUFleDlCLElBQUl1N0I7TUFBVSxHQUFWQTtRQUVMLElBQVRDLE1BRmNEO1FBRWlCLHlCQUZyQnY3QixJQUVxQiw0QkFBL0J3N0I7TUFERyxRQUNpRDthQUt6RGlDLGVBQ0F6OUIsSUFBSXpIO01BQU8sVUFBUEE7T0FDVTs7UUFESCxTQUFQQTtjQUVnQjhDLEVBRmhCOUMsT0FFUzhrQyxNQUZUOWtDO1VBR0osYUFIQXlILElBRWFxOUI7VUFFUyx5QkFKdEJyOUIsSUFJc0IsNEJBRkYzRTtRQUlwQixJQURZcWlDLFFBTFJubEM7UUFNSixhQU5BeUgsSUFLWTA5QjtRQUNaLHVCQU5BMTlCLFFBT3VCO2FBR3ZCMjlCLGlCQUNFMzlCLElBQUl2SDtNQUFRLFVBQVJBLGtCQU1OLE9BTk1BLEtBTU4sa0JBTkV1SDtVQUVZM0UsRUFGUjVDO01BR04sZ0JBSEV1SDtNQUlvQix5QkFKcEJBLElBSW9CLDRCQUZSM0UsR0FJWTthQUsxQnVpQyxrQkFBa0I1OUIsSUFBSXJIO01BQVEsT0FBUkE7O2VBQ0gsdUJBRERxSDs7ZUFFQyx1QkFGREE7Ozs7OztnQkFJaEIsdUJBSmdCQTtnQkFLK0IsU0FBRTthQVluRDY5QixrQkFBa0I3OUIsSUFBSXU5QixTQUFTNWtDLE1BQU1KLElBQUlFLEtBQUt3RjtNQUNoRCxnQkFEb0IrQjtNQUVwQixvQkFGb0JBLElBQUl1OUI7TUFHeEIsa0JBSG9CdjlCLElBQWFySDtNQUlqQyxlQUpvQnFILElBQW1Cekg7TUFLdkMsaUJBTG9CeUgsSUFBdUJ2SDtNQU0zQyxnQkFOb0J1SCxJQUE0Qi9CO01BTzVCLHVCQVBBK0IsSUFPQSxjQVBhckgsT0FPUTthQUt2Q21sQyxrQkFBa0I5OUIsSUFBSXpHO01BQ3hCLE9BRHdCQTs7ZUFFTixnQkFGRXlHO2dCQUdGLGdCQUhFQTtNQUtwQixZQUx3QnpHLFNBTVYsZ0JBTk15RyxTQVFlO2FBYWpDKzlCLHlCQUF5Qm5vQztNQUFpQixVQUFqQkE7T0FBaUIsT0FBakJBO2dCQUNEO2dCQUNBO2dCQUVBO2dCQUNBO2dCQUNBO2dCQUVBO2lCQUNBOztPQVRrQixPQUFqQkE7Z0JBR0QsSUFBakI2RCxJQUhrQjdELGtCQUdELE9BQWpCNkQ7Z0JBSWlCLElBQVp1a0MsTUFQYXBvQyxrQkFPRCxPQUFab29DO2lCQUdJLElBQUwvL0IsRUFWY3JJLGtCQVVILDJCQUFYcUksSUFBNEI7YUFLdkNnZ0Msb0JBQW9CaitCLElBQUl0RztNQUFNLGNBQU5BLElBQ2pCLGtCQURhc0csWUFFZixnQkFGZUEsSUFBSXRHLElBRUk7YUFHNUJ3a0Msc0JBQXNCbCtCLElBQUl2RztNQUM1QiwrQkFENEJBLGFBQzVCOzs7UUFDRTs4QkFGc0J1RyxJQUVFLGdCQUZFdkcsSUFDNUI1QztVQUNFLFNBREZBOzs7Y0FFSTthQU1Fc25DLGFBRUpuK0IsSUFBSXJHO01KaGZULElJZ2ZTRTtNQUFTO2lCQUFUQTtRQXlCWTs7UUF6QkgsT0FBVEE7O2VBQ0k5QyxLQURKOEM7V0FDaUIsa0JBRHJCbUc7ZUFBSW5HLFFBQ0k5Qzs7O2VBQ0VDLE9BRk42QztXQUVpQixrQkFGckJtRztlQUFJbkcsUUFFTTdDOzs7ZUFDSEMsT0FISDRDO1dBR2lCLGtCQUhyQm1HO2VBQUluRyxRQUdHNUM7OztlQUNFQyxPQUpMMkM7V0FJaUIsa0JBSnJCbUc7ZUFBSW5HLFFBSUszQzs7O2VBQ0lDLE9BTFQwQztXQUtpQixrQkFMckJtRztlQUFJbkcsUUFLUzFDOzs7ZUFDSkMsT0FOTHlDO1dBTWlCLGtCQU5yQm1HO2VBQUluRyxRQU1LekM7OztlQUNBQyxPQVBMd0M7V0FPaUIsa0JBUHJCbUc7ZUFBSW5HLFFBT0t4Qzs7O2VBQ0RDLE9BUkp1QztXQVFpQixrQkFSckJtRztlQUFJbkcsUUFRSXZDOzs7ZUFVa0JDLE9BbEJ0QnNDLFdBa0JXdWtDLFVBbEJYdmtDO1dBbUJKLGtCQW5CQW1HO1dBbUI0QixhQW5CNUJBLElBa0JlbytCO1dBRWYsa0JBcEJBcCtCO2VBQUluRyxRQWtCc0J0Qzs7O2VBR0tFLE9BckIzQm9DLFdBcUJhd2tDLFlBckJieGtDO1dBc0JKLGtCQXRCQW1HO1dBc0I0QixhQXRCNUJBLElBcUJpQnErQjtXQUVqQixrQkF2QkFyK0I7ZUFBSW5HLFFBcUIyQnBDOzs7ZUFadEJFLE9BVExrQztXQVNpQixrQkFUckJtRztlQUFJbkcsUUFTS2xDOzs7ZUFDQUMsUUFWTGlDO1dBVWlCLGtCQVZyQm1HO2VBQUluRyxRQVVLakM7OztlQUNGQyxRQVhIZ0M7V0FXaUIsa0JBWHJCbUc7ZUFBSW5HLFFBV0doQzs7O2VBQ0dDLFFBWk4rQjtXQVlpQixrQkFackJtRztlQUFJbkcsUUFZTS9COzs7ZUFFUUMsUUFkZDhCO1dBZUosa0JBZkFtRztlQUFJbkcsUUFjYzlCO29CQVdBO2FBSWR1bUM7Z0JBSWEsSUFBTDVpQyxXQUFTLCtCQUFUQSxPQURHLFFBQzJCO2FBa0gxQzZpQyxjQUFjN0M7TUFDTixJQWhIRzE3QixJQWdISDtNQS9HVixTQUFRdytCLFFBRUo5QyxJQUFJNkI7WUFBSmtCLFVBQUlDOztRQUFZO21CQUFoQkQ7VUFxR2lCOztVQXJHRCxPQUFoQkE7O2lCQTBCSzFuQyxLQTFCTDBuQzthQTJCQSxnQkE5QlN6K0I7YUE4QmdCLG9CQTlCaEJBLElBR0wwK0I7YUE0QkosZ0JBL0JTMStCO2lCQUdUeStCLE1BMEJLMW5DLEtBMUJEMm5DOzs7aUJBNkJNMW5DLE9BN0JWeW5DO2FBOEJBLGdCQWpDU3orQjthQWlDZ0Isb0JBakNoQkEsSUFHTDArQjthQStCSixnQkFsQ1MxK0I7aUJBR1R5K0IsTUE2QlV6bkMsT0E3Qk4wbkM7OztpQkFDU3puQyxPQURid25DLFNBQ1FsbUMsSUFEUmttQzthQUVBLGdCQUxTeitCO2FBS2dCLG9CQUxoQkEsSUFHTDArQjthQUdKLGVBTlMxK0IsSUFJRHpIO2FBRWdCLGdCQU5meUg7aUJBR1R5K0IsTUFDYXhuQyxPQURUeW5DOzs7aUJBS2N4bkMsT0FMbEJ1bkMsU0FLYWptQyxNQUxiaW1DO2FBTUEsZ0JBVFN6K0I7YUFTZ0Isb0JBVGhCQSxJQUdMMCtCO2FBT0osZUFWUzErQixJQVFJeEg7YUFFVyxnQkFWZndIO2lCQUdUeStCLE1BS2tCdm5DLE9BTGR3bkM7OztpQkFVbUJ2bkMsT0FWdkJzbkMsU0FVaUJobUMsS0FWakJnbUMsU0FVWS9sQyxNQVZaK2xDLFNBVUs5bEMsTUFWTDhsQzthQS9HSixnQkE0R2F6K0I7YUEzR2Isb0JBMkdhQSxJQUdMMCtCO2FBN0dSLGtCQTBHYTErQixJQWFKckg7YUF0SFQsZUF5R2FxSCxJQWFHdEg7YUFySGhCLGlCQXdHYXNILElBYVF2SDthQXBIRCxnQkF1R1B1SCxJQXZHTyxjQW9IWHJIO2lCQVZMOGxDLE1BVXVCdG5DLE9BVm5CdW5DOzs7O2NBYXFCdG5DLE9BYnpCcW5DO2NBYW1CN2xDLE9BYm5CNmxDO2NBYWM1bEMsTUFiZDRsQztjQWFPM2xDLFFBYlAybEM7YUFjQSxrQkFqQlN6K0IsSUFHTDArQixXQWFHNWxDLFFBQU9ELE1BQUtEO2lCQWJuQjZsQyxNQWF5QnJuQyxPQWJyQnNuQzs7OztjQWdCeUJybkMsT0FoQjdCb25DO2NBZ0J1QjFsQyxPQWhCdkIwbEM7Y0FnQmtCemxDLE1BaEJsQnlsQztjQWdCV3hsQyxRQWhCWHdsQzthQWlCQSxrQkFwQlN6K0IsSUFHTDArQixXQWdCT3psQyxRQUFPRCxNQUFLRDtpQkFoQnZCMGxDLE1BZ0I2QnBuQyxPQWhCekJxbkM7Ozs7Y0FtQnFCcG5DLE9BbkJ6Qm1uQztjQW1CbUJ2bEMsT0FuQm5CdWxDO2NBbUJjdGxDLE1BbkJkc2xDO2NBbUJPcmxDLFFBbkJQcWxDO2FBb0JBLGtCQXZCU3orQixJQUdMMCtCLFdBbUJHdGxDLFFBQU9ELE1BQUtEO2lCQW5CbkJ1bEMsTUFtQnlCbm5DLE9BbkJyQm9uQzs7OztjQXNCcUJubkMsT0F0QnpCa25DO2NBc0JtQnBsQyxPQXRCbkJvbEM7Y0FzQmNubEMsTUF0QmRtbEM7Y0FzQk9sbEMsTUF0QlBrbEM7YUEvRUosZ0JBNEVheitCO2FBM0ViLG9CQTJFYUEsSUFHTDArQjthQTdFUixrQkEwRWExK0IsSUF5QkZ6RzthQWxHWCxlQXlFYXlHLElBeUJLMUc7YUFqR2xCLGlCQXdFYTBHLElBeUJVM0c7YUFoR0gsZ0JBdUVQMkcsSUF2RU8sZ0JBZ0dUekc7aUJBdEJQa2xDLE1Bc0J5QmxuQyxPQXRCckJtbkM7OztpQkFnQ09qbkMsT0FoQ1hnbkMsU0FnQ01qbEMsTUFoQ05pbEM7YUFpQ0EsZ0JBcENTeitCO2FBb0NnQixvQkFwQ2hCQSxJQUdMMCtCO2FBa0NKLGVBckNTMStCLElBbUNIeEc7YUFFa0IsZ0JBckNmd0c7aUJBR1R5K0IsTUFnQ1dobkMsT0FoQ1BpbkM7OztpQkFtREUvbUMsT0FuRE44bUM7YUFvREEsa0JBdkRTeitCO2lCQUdUeStCLE1BbURNOW1DOzs7aUJBSWVDLFFBdkRyQjZtQyxTQXVEZ0JobEMsSUF2RGhCZ2xDO2FBd0RBLHNCQTNEU3orQixJQTBET3ZHO2lCQXZEaEJnbEMsTUF1RHFCN21DOzs7aUJBR0ZDLFFBMURuQjRtQyxTQTBEY0UsTUExRGRGO2FBMkRBLG9CQTlEU3orQixJQTZESzIrQjtpQkExRGRGLE1BMERtQjVtQzs7O2lCQUlTQyxRQTlENUIybUMsU0E4RHFCOWtDLE1BOURyQjhrQyxTQThEWWxELFFBOURaa0Q7YUErREEsZ0JBbEVTeitCO2FBa0VnQixvQkFsRWhCQSxJQUdMMCtCO2FBZ0VKLGVBbkVTMStCLElBaUVHdTdCO2FBRWdCLGdCQW5FbkJ2N0I7YUFvRVQsYUFwRVNBLElBaUVZckc7YUFHRyxnQkFwRWZxRzthQW9Fd0MsZ0JBcEV4Q0E7aUJBR1R5K0IsTUE4RDRCM21DLFFBOUR4QjRtQzs7O2lCQW1FMEIzbUMsUUFuRTlCMG1DLFNBbUV1QjVrQyxRQW5FdkI0a0MsU0FtRWM5QyxVQW5FZDhDO2FBb0VBLGdCQXZFU3orQjthQXVFZ0Isb0JBdkVoQkEsSUFHTDArQjthQXFFSixlQXhFUzErQixJQXNFSzI3QjthQUVjLGdCQXhFbkIzN0I7YUF5RVQsYUF6RVNBLElBc0Vjbkc7YUFHQyxnQkF6RWZtRzthQXlFd0MsZ0JBekV4Q0E7aUJBR1R5K0IsTUFtRThCMW1DLFFBbkUxQjJtQzs7O2lCQW9DRTNrQyxRQXBDTjBrQzthQXFDQSxnQkF4Q1N6K0I7YUF3Q2dCLG9CQXhDaEJBLElBR0wwK0I7YUFzQ0osZ0JBekNTMStCO2lCQUdUeStCLE1Bb0NNMWtDLFFBcENGMmtDOzs7aUJBdUNFMWtDLFFBdkNOeWtDO2FBd0NBLGdCQTNDU3orQjthQTJDZ0Isb0JBM0NoQkEsSUFHTDArQjthQXlDSixnQkE1Q1MxK0I7aUJBR1R5K0IsTUF1Q016a0MsUUF2Q0Ywa0M7OztpQkF5RndCemtDLFFBekY1QndrQyxTQXlGZ0J2a0MsV0F6RmhCdWtDO2FBMEZBLHNCQTdGU3orQixJQTZGaUIseUJBRFY5RjtpQkF6RmhCdWtDLE1BeUY0QnhrQzs7O2lCQUdBRSxRQTVGNUJza0MsU0E0RmdCcmtDLFdBNUZoQnFrQztzQkE0RmdCcmtDO3lDQUVPNGpDO2VBQ3JCLGtCQWxHT2grQjtlQWtHcUIsa0JBbEdyQkEsSUFpR2NnK0I7OzJCQUZQNWpDLGNBSU93a0M7ZUFDckIsa0JBcEdPNStCO2VBb0dxQixrQkFwR3JCQSxJQW1HYzQrQjtpQkFoR3ZCSCxNQTRGNEJ0a0M7OztpQkE1Q3JCRSxRQWhEUG9rQzthQWlEQSxnQkFwRFN6K0I7YUFvRGdCLG9CQXBEaEJBLElBR0wwK0I7YUFrREosZ0JBckRTMStCO2lCQUdUeStCLE1BZ0RPcGtDLFFBaERIcWtDOzs7aUJBeUVnQ3BrQyxRQXpFcENta0MsU0F5RTBCbGtDLFNBekUxQmtrQyxTQXlFZWprQyxVQXpFZmlrQzthQTBFQSxnQkE3RVN6K0I7YUE2RWdCLG9CQTdFaEJBLElBR0wwK0I7YUEyRUosZUE5RVMxK0IsSUE0RU14RjthQXRTbkI7Y0E0Q0k4Rjt3QkFBV04sSUFBSW5KO2lCQUFVLElBR3pCb0gsRUFIeUIsWUFBVnBIO2lCQUFVLGNBR3pCb0g7MkJBRk8sZ0JBREkrQixRQUNKLGdCQURJQTtpQ0FHWC9COzZCQURPLGdCQUZJK0IsUUFFSixnQkFGSUE7NEJBR0osZ0JBSElBLElBR1gvQixFQUE2QjthQUVqQyxnQkF5S2ErQjthQTFOYjtjQW1ESzs4QkFtUHlCekY7a0JBbFByQixnQkFzS0l5RixRQXRLcUIsYUFrUEp6Rjs7Y0FyUzVCOzswQkFBSXVrQyxTQUFTN2dDO21CQUNpQzs4QkFEakNBO29CQUNlLFdBRGZBO29CQUVYLHlCQUZXQTttQkFFWDtvQkFDUTs4Q0FGSitnQztxQkFFSSxVQUE2QixvQkFGekJEOzs7O21CQURkLFdBR2dFO3dCQUg1REQ7Y0FBSjthQUlHLGdCQUFrQixnQkFxTlY5K0I7YUExTmIsSUFRa0JuSjs7YUFDaEI7a0JBRGdCQTtpQkFFWCx5QkFBbUIsWUFGUkE7bUJBR1QsUUFIU0E7aUJBS1Ysc0JBTFVBLEdBS1Y7O3FDQUNNLFdBNE1EbUo7OztxQkEzTUksUUFQQ25KOztpQkk4TVo7bUJKdE1HLElBQ1k0aEIsSUFUSDVoQjttQkFVYix5QkFBbUIsWUFESDRoQjtxQkFnQmpCLFdBeUxTelksSUF6TVF5WTtxQkFnQmpCLFFBaEJpQkEsWUFUSDVoQjs7bUJBUVQ7b0JBR0Msb0JBRlc0aEI7b0JBRVg7Ozs7c0JBRUosV0FxTU96WSxTQXJNUCxXQXFNT0E7Ozs7O3NCQW5NWSx5QkFBb0IsWUFOeEJ5WTt3QkFPZixXQWtNT3pZLElBek1ReVk7d0JBT2YsUUFQZUEsWUFUSDVoQjs7Ozs7O3FCQWtCRCx5QkFBb0IsWUFUaEI0aEI7dUJBVWYsV0ErTE96WSxJQXpNUXlZO3VCQVdmLFdBOExPelksSUF6TVF5WTt1QkFXZixRQVhlQSxZQVRINWhCOztxQkF1QlosTUFkZTRoQixZQWNmLElBZGVBLFlBbUJGd21CO3FCQUNqQjt1QkFBa0IsV0FEREEsT0FDQyxvQkFBb0IsWUFEckJBO3lCQU9mLFFBUGVBO3VCQUVmLFdBb0xTai9CLElBdExJb2I7dUJBR2IsV0FtTFNwYjt1QkFsTFQsV0FrTFNBLElBdExNaS9CO3VCQUlmLEdBSmVBLFdBS0MsUUFMREEsWUE1QkRwb0M7O2VBRGIsZ0JBQWtCLGdCQW1OVm1KO2VBdFFYNjhCLGdCQXNRVzc4QjttQkFHVHkrQixNQXlFb0Nua0MsUUF6RWhDb2tDOzs7aUJBNkV1QmprQyxRQTdFM0Jna0MsU0E2RWtCL2pDLFFBN0VsQitqQzthQThFQSxnQkFqRlN6K0I7YUFpRmdCLG9CQWpGaEJBLElBR0wwK0I7YUF0T29CLE9BbVROaGtDOzs7O2FBRWxCLGdCQWxGU3NGO2lCQUdUeStCLE1BNkUyQmhrQyxRQTdFdkJpa0M7OztpQkFpRlcvakMsUUFqRmY4akM7YUFrRkEsZ0JBckZTeitCO2FBcUZnQixvQkFyRmhCQSxJQUdMMCtCO2FBbUZKLHNCQXRGUzErQjtpQkFHVHkrQixNQWlGZTlqQyxRQWpGWCtqQzs7O2FBc0Z3QjtjQURSOWpDLFFBckZwQjZqQztjQXFGZTVqQyxJQXJGZjRqQztjQXNGNEIsdUNBRGI1akMsSUFBS0Q7Y0FDUTtjQXRGNUI2akM7Y0FBSUM7OzthQTJDVTtjQURJNWpDLFFBMUNsQjJqQztjQTBDUXpqQyxNQTFDUnlqQztjQTJDYyx5QkFETnpqQzs7YUFDTTttQkFBZDBmO2VBQ0U7aUNBL0NPMWE7aUJBK0NrQixvQkEvQ2xCQSxJQUdMMCtCO2lCQTZDRixnQkFoRE8xK0I7aUJBZ0RQLFNBRkYwYTs7O2FBQWMsSUEzQ2QrakIsTUEwQ2tCM2pDLFFBMUNkNGpDO3NCQXFHZTtNQXZHdkIsUUE4R2dCaEQ7YUF4V2RzQixnQkF5UFdoOUIsSUFrSE07YUFXYm8vQjs7T0F1Qlk7O09BdkJaO2dCQU1ZLElBQVJyb0MsY0FBZ0IsZUFBaEJBO2dCQU9VLElBQVJDLGdCQUFrQixlQUFsQkE7Z0JBTkssSUFBUkMsZ0JBQWUsZUFBZkE7Z0JBQ1UsSUFBUkMsZ0JBQWlCLGVBQWpCQTtnQkFFWSxJQUFSQyxnQkFBcUIsZUFBckJBO2dCQURJLElBQVJDLGdCQUFpQixlQUFqQkE7Z0JBRVEsSUFBUkMsZ0JBQWlCLGVBQWpCQTtnQkFDTyxJQUFSQyxnQkFBZ0IsZUFBaEJBO29CQU9XQyxnQkFBSkMsWUFDSSxVQURKQSxHQUNJLEtBREFEOztjQUVRRSxnQkFBTFUsYUFBTFQ7VUFDVSxVQURMUyxJQUFMVCxJQUNVLEtBREFEO2lCQU5WLElBQVJFLGdCQUFpQixnQkFBakJBO2lCQURRLElBQVJDLGlCQUFpQixnQkFBakJBO2lCQUVNLElBQVJDLGlCQUFlLGdCQUFmQTtpQkFDVyxJQUFSQyxpQkFBa0IsZ0JBQWxCQTtpQkFDZ0IsSUFBUkMsaUJBQTBCLGdCQUExQkEsVUFLVTthQWdINUJzbkMsTUFXRTNuQyxJQUFJUztNSm55Qlg7TUlteUJrQixVQUFYVDtpQkFBSVM7UUE4Q3dCOztlQTlDeEJBOzs7Ozs7OztrQkErQ2E7O09BL0NOLE9BQVhUOzs7b0JBQUlTOztvQkFDMEIsSUFBVG1uQyxNQURqQm5uQyxPQUNrQyxxQkFBakJtbkM7Ozs7Ozs7Ozs7Ozs4QkFEckI1bkM7b0JBQUlTOztvQkFFOEIsSUFBVG9uQyxRQUZyQnBuQyxPQUV3QyxxQkFBbkJvbkM7Ozs7Ozs7Ozs7Ozs4QkFGekI3bkM7b0JBQUlTOzs7O29CQUl3QixJQUFUcW5DLFFBSmZybkMsT0FJK0IscUJBQWhCcW5DOzs7Ozs7Ozs7Ozs7OEJBSm5COW5DO29CQUFJUzs7OztvQkFLNEIsSUFBVHNuQyxRQUxuQnRuQyxPQUtxQyxxQkFBbEJzbkM7Ozs7Ozs7Ozs7Ozs4QkFMdkIvbkM7b0JBQUlTOzs7O29CQU9vQyxJQUFUdW5DLFFBUDNCdm5DLE9BT2lELHFCQUF0QnVuQzs7Ozs7Ozs7Ozs7OzhCQVAvQmhvQztvQkFBSVM7Ozs7b0JBTTRCLElBQVR3bkMsUUFObkJ4bkMsT0FNcUMscUJBQWxCd25DOzs7Ozs7Ozs7Ozs7OEJBTnZCam9DO29CQUFJUzs7OztvQkFRNEIsSUFBVHluQyxRQVJuQnpuQyxPQVFxQyxxQkFBbEJ5bkM7Ozs7Ozs7Ozs7Ozs4QkFSdkJsb0M7b0JBQUlTOzs7O29CQUcwQixJQUFUMG5DLFFBSGpCMW5DLE9BR2tDLHFCQUFqQjBuQzs7Ozs7Ozs7Ozs7OzhCQUhyQm5vQztvQkFBSVM7Ozs7O2NBZ0N3QixJQURrQjJuQyxRQS9CMUMzbkMsT0ErQnFDNG5DLE1BL0JyQzVuQyxPQWdDd0IsZ0JBRGtCMm5DO2NBQ2pDLHFCQUQ0QkM7Ozs7Ozs7c0JBRXJCOzs7K0JBakNwQnJvQztvQkFBSVM7Ozs7OztjQXNDRztlQURvQjZuQyxRQXJDdkI3bkM7ZUFxQ2lCOG5DLEtBckNqQjluQztlQXFDVytuQyxLQXJDWC9uQztlQXNDRyxTQUFNLFdBREUrbkM7ZUFFRSxvQkFEZjFvQztlQUNlOztjQUNSLFdBREo2b0M7Y0FFSSxXQUZHRDtjQUdlLGVBTE5ILEtBS00sV0FMQUQ7Ozs7Ozs7dUJBTUw7OzttQkEzQ3RCdG9DO29CQUFJUztZQVU0QixJQUFUbW9DLFFBVm5Cbm9DLE9BVXFDLHNCQUFsQm1vQztVQUNSOzsrQkFYZjVvQztvQkFBSVM7Ozs7O3FCQWM0QixJQUFUb29DLFNBZG5CcG9DLE9BY3FDLHNCQUFsQm9vQzs7dUJBQ1I7OzsrQkFmZjdvQztvQkFBSVM7Ozs7OztxQkFrQndCLElBQVRxb0MsU0FsQmZyb0MsT0FrQitCLHNCQUFoQnFvQzs7dUJBQ047OzsrQkFuQmI5b0M7b0JBQUlTOzs7Ozs7O3FCQXNCOEIsSUFBVHNvQyxTQXRCckJ0b0MsT0FzQndDLHNCQUFuQnNvQzs7dUJBQ1Q7OzsrQkF2QmhCL29DO29CQUFJUzs7Ozs7Ozs7cUJBMkJOLElBRDJDdW9DLFNBMUJyQ3ZvQyxPQTJCWSxzQkFEeUJ1b0M7O3VCQUVqQjtNSS9TdEI7ZUorUmE7ZUFJQTtlQUlGO2VBSUc7ZUFLUTtlQUtKO2VBVUU7Z0JBSUwsOEJBQVk7YUF6SzNCUDs7UUFTSjs4QkFHYSxRQUFJO1NBSGpCLHFCQUVhLFFBQUk7U0FGakIscUJBQ2EsUUFBSTtRQURqQiwwQkFBYSxRQUFJOztPQVRiOztVQWNKOztXQUFxQixvQkFEYnBwQztXQUNhOzs7O2dDQUVHLFdBRmhCOHBDLE1BRWdCLFFBQWU7VUFGbEIsMEJBQ0csV0FEcEJDLE1BQ29CLFFBQWUsT0FEM0JGLEdBQUlEOztVQUtoQjs7V0FBcUIsc0JBRFgzcEM7V0FDVzs7OztnQ0FFRyxXQUZoQmlxQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLaEI7O1dBQXFCLHNCQURkOXBDO1dBQ2M7Ozs7Z0NBRUcsV0FGaEJvcUMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQixzQkFEWmpxQztXQUNZOzs7O2dDQUVHLFdBRmhCdXFDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQVVoQjs7V0FBcUIsc0JBRFJwcUM7V0FDUTs7OztnQ0FFRyxXQUZoQjBxQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFMaEI7O1dBQXFCLHNCQURadnFDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEI2cUMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBVWhCOztXQUFxQixzQkFEWjFxQztXQUNZOzs7O2dDQUVHLFdBRmhCZ3JDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtoQjs7V0FBcUIsc0JBRGI3cUM7V0FDYTs7OztnQ0FFRyxXQUZoQm1yQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFpQ2hCOztXQUFxQixzQkFERGhyQztXQUNDOzs7O2dDQUVHLFdBRmhCc3JDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtLO1dBRE1sckM7V0FBTFU7V0FBTFQ7V0FDSSxzQkFETUQ7V0FDTjs7OztXQUNaLFNBQU0sS0FGRUMsS0FBS1M7V0FHRCxzQkFEakJYO1dBQ2lCOzs7O2dDQUlHLFdBSlIyckMsTUFJOEIsV0FOOUJKLFFBTThCLFFBQWU7V0FKeEMscUJBR0csV0FMWkMsUUFLa0MsV0FIbENJLE1BR2tDLFFBQWU7V0FIeEMscUJBRUcsV0FGaEJDLE1BRXNDLFdBSnRDSixRQUlzQyxRQUFlO1VBRnhDOztvQkFDRyxXQUhwQkMsUUFHMEMsV0FEMUNJLE1BQzBDLFFBQWU7Ozs7O1VBOUI3RDs7V0FBcUIsdUJBRFozckM7V0FDWTs7OztnQ0FFRyxXQUZoQjhyQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFMaEI7O1dBQXFCLHVCQURaM3JDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEJpc0MsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBVWhCOztXQUFxQix1QkFEZDlyQztXQUNjOzs7O2dDQUVHLFdBRmhCb3NDLFNBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFNBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtoQjs7V0FBcUIsdUJBRFhqc0M7V0FDVzs7OztnQ0FJRyxXQUpScXNDLFNBSVEsUUFBZTtXQUpsQixxQkFHRyxXQUhaQyxTQUdZLFFBQWU7V0FIbEIscUJBRUcsV0FGaEJDLFNBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFNBQ29CLFFBQWU7Ozs7O1VBS3ZDOztXQUFxQix1QkFESHZzQztXQUNHOzs7O2dDQUlHLFdBSlJ3c0MsU0FJUSxRQUFlO1dBSmxCLHFCQUdHLFdBSFpDLFNBR1ksUUFBZTtXQUhsQixxQkFFRyxXQUZoQkMsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7O3dCQWdCdUI7YUF1TDlEQyx5QkFFRWxzQyxLQUFLa0I7TUFBUyxjQUFkbEIsMEJBQUtrQixrQkFHMEI7YUFiakNpckMsdUJBRUVyc0MsSUFBSW9CO01BQVMsY0FBYnBCLGlCQUFJb0IsWUFBSnBCLE9BQUlvQixlQUd5QjthQXJDL0JrckMsZ0JBR0E3cEMsTUFBTXJCO01BQVMsR0FBZnFCO1FBRXFCLElBQVQ4cEMsUUFGWjlwQyxTQUU0QiwyQkFBaEI4cEMsUUFGTm5yQztNQUNTLE9BRFRBLEtBRW1EO2FBOUR6RG9yQyxhQUVBcHJDO01KLzFCTCxJSSsxQktFO01BQVM7aUJBQVRBO1FBcUQ4Qjs7UUFyRHJCLE9BQVRBO2lCQTJCOEIsSUFBekI5QyxLQTNCTDhDLFdBMkJzQyx1QkFBakM5QztpQkFDeUIsSUFBcEJDLE9BNUJWNkMsV0E0QnNDLHVCQUE1QjdDOztlQTNCR0MsT0FEYjRDLFdBQ1F0QixJQURSc0I7V0FFc0MsOEJBRDlCdEIsT0FDOEIsYUFEekJ0Qjs7ZUFFS0MsT0FIbEIyQyxXQUdhckIsTUFIYnFCO1dBSXNDLDhCQUR6QnJCLFNBQ3lCLGFBRHBCdEI7O1dBSUo7WUFES0MsT0FObkIwQztZQU1hcEIsS0FOYm9CO1lBTVFuQixNQU5SbUI7WUFPYyxxQkFESzFDO1lBRUwsaUNBRkRzQixRQUNUdXNDO1dBQ1UsOEJBRk50c0MsTUFFSnVzQzs7V0FHVTtZQURPN3RDLE9BVnJCeUM7WUFVZWpCLE9BVmZpQjtZQVVVaEIsTUFWVmdCO1lBV2MsdUJBRE96QztZQUVQLG1DQUZDd0IsVUFDWHNzQztXQUNVLDhCQUZKcnNDLE1BRU5zc0M7O1dBR1U7WUFEVzl0QyxPQWR6QndDO1lBY21CZCxPQWRuQmM7WUFjY2IsTUFkZGE7WUFlYyx1QkFEV3hDO1lBRVgsbUNBRkswQixVQUNmcXNDO1dBQ1UsOEJBRkFwc0MsTUFFVnFzQzs7V0FHVTtZQURPL3RDLE9BbEJyQnVDO1lBa0JlWCxPQWxCZlc7WUFrQlVWLE1BbEJWVTtZQW1CYyx1QkFET3ZDO1lBRVAsbUNBRkM0QixVQUNYb3NDO1dBQ1UsOEJBRkpuc0MsTUFFTm9zQzs7V0FHVTtZQURPaHVDLE9BdEJyQnNDO1lBc0JlUixPQXRCZlE7WUFzQlVQLE1BdEJWTztZQXVCYyx1QkFET3RDO1lBRVAsbUNBRkM4QixVQUNYbXNDO1dBQ1UsOEJBRkpsc0MsTUFFTm1zQzs7ZUFLT2h1QyxPQTdCWG9DLFdBNkJNTCxNQTdCTks7V0E4QnNDLDhCQURoQ0wsU0FDZ0MsYUFEM0IvQjtrQkFZbUIsWUF6QzlCb0M7a0JBMEM4QixZQTFDOUJBO2tCQTJDOEIsWUEzQzlCQTs7ZUFvQ21CbEMsT0FwQ25Ca0MsV0FvQ2VyQyxHQXBDZnFDO1dBcUNtQixVQURKckMsR0FDSSxhQURBRzs7ZUFFRUMsUUF0Q3JCaUMsV0FzQ2lCZ3NDLEtBdENqQmhzQztXQXVDeUIsVUFEUmdzQyxVQUNRLGFBREpqdUM7a0JBUFMsSUFBeEJDLFFBL0JOZ0MsV0ErQnVDLHdCQUFqQ2hDO2tCQUN3QixJQUF4QkMsUUFoQ04rQixXQWdDdUMsd0JBQWpDL0I7a0JBaUJ3QixZQWpEOUIrQjs7V0FtRGtEO1lBRHRCOUIsUUFsRDVCOEI7WUFrRGdCTyxXQWxEaEJQO1lBbURrRCxrQkFEdEI5QjtXQXpEVixTQXlERnFDO29DQXhERXNoQyxrQkFJbEJxSixhQUprQnJKOzs7cUJBd0RGdGhDO2FBdkRFcWtDO2tCQUdsQnNHLGFBSGtCdEc7a0JJdlJkem1DO2tCSjhUMEIsSUFBdkIrQixRQWxDUEYsV0FrQ3dDLHdCQUFqQ0U7a0JBV3VCLElBQVRDLFFBN0NyQkgsV0E2Q3dDLHVCQUFuQkc7a0JBQ1MsSUFBVEMsUUE5Q3JCSixXQThDcUMsdUJBQWhCSTtrQkFDUyxJQUFmRSxRQS9DZk4sV0ErQ3NDLHVCQUF2Qk07O2VBQ0tFLFFBaERwQlIsV0FnRGVnQixJQWhEZmhCO1dBb0VXLFVBcEJJZ0I7WUFvQkosT0FwQklBO3lCQWhEZmhCLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTtxQkFpQ2lDLHdCQWpDakNBOzBCQWhEcEJSLFFBZ0RvQlE7O1lBb0JULE9BcEJJUTt5QkFoRGZoQixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTs7ZUFnQ2UsSUFBVjByQyxRQWhDVmxyQztlQWdDdUMsb0JBQTdCa3JDLFFBQTZCLGFBaENsQzFyQzswQkFoRHBCUixRQWdEb0JROzBCQWhEcEJSLFFBZ0RvQlE7O2VBZkZDLFFBakNsQlQsV0FpQ1FtQixNQWpDUm5CO1dBaUNvRCx1QkFBNUNtQixNQUE0QyxhQUFsQ1YsVUFvQndCOzs7O2FBMEQxQzByQyxhQUdBenRDLElBQUlvQjtNQUFTLFVBQWJwQjtPQUNpQixZQURib0I7O1FBQVMsU0FBYnBCO2NBRW9CMHRDLEVBRnBCMXRDLE9BRWE4a0MsTUFGYjlrQyxvQkFFYThrQyxNQUFPNEksR0FGaEJ0c0M7O2NBR3NCNUMsS0FIdEI0QyxTQUdRK2pDLFFBSFpubEMsb0JBR1ltbEMsU0FBYzNtQztRQUNyQixvQkFBbUI7YUFLeEJtdkMsYUFHQTN0QyxJQUFJRSxLQUFLa0I7TUFBcUIsdUJBQTlCcEIsSUFBU29CO01BQXFCLFVBQTFCbEI7Ozs7Z0JBSzBDMUIsYUFBWnlCLGlDQUFZekI7VUFFZjtZQU5PQyxnQkFBTDBCOzBCQUFLMUI7TUFEUixJQUdXQyxnQkFBTDRCLGVBQXRCc1IsRUFIVjFSO2dCQUdnQ0ksU0FBdEJzUixHQUEyQmxULE9BSVM7YUEwTWxEa3ZDLCtCQUlBL0gsVUFBVTFDLElBQUkvaEM7TUFBUyxVQUF2QnlrQztPQTBFNkIsNEJBMUVuQjFDLElBQUkvaEM7O09BQVMsT0FBdkJ5a0M7O29CQUFjemtDO1lBR1o7YUFGOEIwc0MsV0FEbEIxc0M7YUFDTjJzQyxlQURSbEk7YUFHRTs2Q0FGTWtJLGVBREU1SyxJQUNzQjJLO2FBRTlCOzt5QkFEaUJFLGtCQUFpQjlIOzs7b0JBRnRCOWtDO1lBT1o7YUFGa0M2c0MsYUFMdEI3c0M7YUFLSjhzQyxpQkFMVnJJO2FBT0U7O2dCQUZRcUksaUJBTEEvSyxJQUswQjhLO2FBRWxDOzt5QkFEaUJFLGtCQUFpQnZIOzs7b0JBTnRCeGxDO1lBV1o7YUFGNEJndEMsYUFUaEJodEM7YUFTUGl0QyxpQkFUUHhJO2FBV0U7O2dCQUZLd0ksaUJBVEdsTCxJQVNvQmlMO2FBRTVCOzt5QkFEaUJHLGtCQUFpQkQ7OztvQkFWdEJsdEM7WUFlWjthQUZnQ290QyxhQWJwQnB0QzthQWFMcXRDLGlCQWJUNUk7YUFlRTs7Z0JBRk80SSxpQkFiQ3RMLElBYXdCcUw7YUFFaEM7O3lCQURpQkcsa0JBQWlCRDs7O29CQWR0QnR0QztZQW1CWjthQUZ3Q3d0QyxhQWpCNUJ4dEM7YUFpQkR5dEMsaUJBakJiaEo7YUFtQkU7O2dCQUZXZ0osaUJBakJIMUwsSUFpQmdDeUw7YUFFeEM7O3lCQURpQkcsa0JBQWlCRDs7O29CQWxCdEIxdEM7WUF1Qlo7YUFGZ0M0dEMsYUFyQnBCNXRDO2FBcUJMNnRDLGlCQXJCVHBKO2FBdUJFOztnQkFGT29KLGlCQXJCQzlMLElBcUJ3QjZMO2FBRWhDOzt5QkFEaUJHLG1CQUFpQkQ7OztvQkF0QnRCOXRDO1lBMkJaO2FBRmdDZ3VDLGFBekJwQmh1QzthQXlCTGl1QyxrQkF6QlR4SjthQTJCRTs7Z0JBRk93SixrQkF6QkNsTSxJQXlCd0JpTTthQUVoQzs7eUJBRGlCRyxtQkFBaUJEOzs7b0JBMUJ0Qmx1QztZQStCWjthQUY4Qm91QyxhQTdCbEJwdUM7YUE2Qk5xdUMsa0JBN0JSNUo7YUErQkU7O2dCQUZNNEosa0JBN0JFdE0sSUE2QnNCcU07YUFFOUI7O3lCQURpQkcsbUJBQWlCRDs7O29CQTlCdEJ0dUM7O2FBbURjd3VDLGFBbkRkeHVDO2FBbURDeXVDLFdBbkREenVDO2FBa0RhMHVDLGtCQWxEM0JqSzthQWtEZWtLLGFBbERmbEs7WUFvREcsb0JBRllrSyxpQkFDQUY7YUFDdUM7WUFFcEQ7OztnQkFKeUJDLGtCQWxEakIzTSxJQW1Ea0J5TTthQUcxQjs7eUJBSGFDLFdBRUlJLG1CQUFpQkQ7OztvQkFyRHRCNXVDO1lBMkRtQzthQUZOOHVDLGFBekQ3Qjl1QzthQXlEZ0IrdUMsYUF6RGhCL3VDO2FBeURHZ3ZDLFdBekRIaHZDO2FBd0Q2Qml2QyxrQkF4RDNDeEs7YUF3RDhCeUssYUF4RDlCeks7YUF3RGlCMEssYUF4RGpCMUs7YUEyRGlELGtCQUZoQ3VLO1lBRWQsb0JBQVUsVUFISUc7YUFJWjtZQUQ0QyxZQUVBLFVBSm5CSjtZQUkzQixvQkFBVSxVQUxpQkc7YUFNekI7WUFINEM7YUFJaEMsa0JBQU0sS0FOTkYsWUFBYUQ7YUFPWCxzQkFEZnJLO2FBQ2U7O1lBQ1IsV0FESmdDO1lBRUksV0FGR0Q7WUFMbUM7YUFTL0M7O2dCQUFpQyxVQVpRd0ksbUJBeERqQ2xOLElBeURpQytNO2FBV3pDOztZQUc4Qjt1QkFkZkUsV0FBYUQsYUFjRSxLQUpiTTtvQkFBaUJEOzs7b0JBbkV0QnB2QztZQW1DWjthQUZnQ3N2QyxhQWpDcEJ0dkM7YUFpQ0x1dkMsa0JBakNUOUs7YUFtQ0U7O2dCQUZPOEssa0JBakNDeE4sSUFpQ3dCdU47YUFFaEM7OzBCQURpQkcsbUJBQWlCRDs7O29CQWxDdEJ4dkM7WUF1Q1o7YUFGZ0MwdkMsY0FyQ3BCMXZDO2FBcUNMMnZDLGtCQXJDVGxMO2FBdUNFOztnQkFGT2tMLGtCQXJDQzVOLElBcUN3QjJOO2FBRWhDOzswQkFEaUJHLG1CQUFpQkQ7OztvQkF0Q3RCNXZDO1lBMkNaO2FBRmtDOHZDLGNBekN0Qjl2QzthQXlDSit2QyxrQkF6Q1Z0TDthQTJDRTs7Z0JBRlFzTCxrQkF6Q0FoTyxJQXlDMEIrTjthQUVsQzs7MEJBRGlCRyxtQkFBaUJEOzs7b0JBMUN0Qmh3QztZQStDWjthQUZrRGt3QyxjQTdDdENsd0M7YUE2Q0ltd0Msa0JBN0NsQjFMO2FBK0NFOztnQkFGZ0IwTCxrQkE3Q1JwTyxJQTZDMENtTzthQUVsRDs7MEJBRGlCRyxtQkFBaUJEOzs7TUE2Qi9CLG1CQUFtQjthQXpReEIzRCxnQkFNRTFLLElBNElNL2hDO01BNUlPLFVBQWIraEM7T0FtSDJCLFlBeUJyQi9oQzs7T0E1SU8sT0FBYitoQzs7b0JBNElNL2hDO1lBMUkyQjthQURaMHNDLFdBMklmMXNDO2FBM0lIc3dDLFNBREh2TzthQUVpQyxzQkFEOUJ1TyxTQUFrQjVEO2FBQ1k7O3lCQUFoQjVILE9BQU01a0M7OztvQkEwSWpCRjtZQXZJMkI7YUFEUDZzQyxhQXdJcEI3c0M7YUF4SUV1d0MsV0FKUnhPO2FBS2lDLHdCQUR6QndPLFdBQWtCMUQ7YUFDTzs7eUJBQWhCckgsT0FBTXVHOzs7VUFHbkI7V0FET3lFLFdBUFh6TztXQU9NbmpDLElBUE5takM7V0FRSSxxQkFERW5qQyxJQXFJQW9CO1dBcElGOzs7WUFFSjs7YUFBbUMsd0JBSHhCd3dDLFdBRXVCeEQ7YUFDQzs7OEJBQWhCRSxPQUFNbEI7VUFFRzs7VUFHeEI7V0FEWXlFLFdBZGhCMU87V0FjV2xqQyxNQWRYa2pDO1dBZUkscUJBRE9sakMsTUE4SExtQjtXQTdIRjs7O1lBRUo7O2FBQW1DLHdCQUhuQnl3QyxXQUVrQnJEO2FBQ0M7OzhCQUFoQkUsT0FBTXJCO1VBRUc7O1VBR3hCO1dBRGlCeUUsV0FyQnJCM087V0FxQmVqakMsS0FyQmZpakM7V0FxQlVoakMsTUFyQlZnakM7V0FxQkcvaUMsTUFyQkgraUM7V0FzQkkscUJBRE1oakMsTUFBS0QsS0F1SFRrQjtXQXRIRjs7O1lBRStCO2FBREV3dEM7YUFBYnZ1QzthQUNXLHdCQUhkeXhDLFdBRWdCbEQ7YUFDRjs7eUJBSGhDeHVDLFdBRXFCQyxPQUNMeXVDLE9BQU12QjtVQUVNOztVQUczQjtXQURtQndFLFdBNUJ2QjVPO1dBNEJpQjNpQyxPQTVCakIyaUM7V0E0Qlk3aUMsTUE1Qlo2aUM7V0E0Qks1aUMsUUE1Qkw0aUM7V0E2QkkscUJBRFE3aUMsTUFBS0UsT0FnSFhZO1dBL0dGOzs7WUFFK0I7YUFESTR0QzthQUFmcnVDO2FBQ1csd0JBSFpveEMsV0FFZ0IvQzthQUNKOzt5QkFIOUJ6dUMsYUFFbUJJLE9BQ0x1dUMsT0FBTTFCO1VBRU07O1VBRzNCO1dBRHVCd0UsV0FuQzNCN087V0FtQ3FCcmlDLE9BbkNyQnFpQztXQW1DZ0IxaUMsTUFuQ2hCMGlDO1dBbUNTemlDLFFBbkNUeWlDO1dBb0NJLHFCQURZMWlDLE1BQUtLLE9BeUdmTTtXQXhHRjs7O1lBRStCO2FBRFFndUM7YUFBbkI2QzthQUNXLHlCQUhSRCxXQUVnQjVDO2FBQ1I7O3lCQUgxQjF1QyxhQUVldXhDLE9BQ0wzQyxPQUFNNEM7VUFFTTs7VUFHM0I7V0FEbUJDLFdBMUN2QmhQO1dBMENpQmlQLE9BMUNqQmpQO1dBMENZdmlDLE1BMUNadWlDO1dBMENLdGlDLFFBMUNMc2lDO1dBMkNJLHNCQURRdmlDLE1BQUt3eEMsT0FrR1hoeEM7V0FqR0Y7OztZQUUrQjthQURJb3VDO2FBQWY2QzthQUNXLHlCQUhaRixXQUVnQjNDO2FBQ0o7O3lCQUg5QjN1QyxhQUVtQnd4QyxPQUNMM0MsT0FBTTRDO1VBRU07O1VBRzNCO1dBRG1CQyxXQWpEdkJwUDtXQWlEaUJxUCxPQWpEakJyUDtXQWlEWXBpQyxNQWpEWm9pQztXQWlES25pQyxNQWpETG1pQztXQWtESSxzQkFEUXBpQyxNQUFLeXhDLE9BMkZYcHhDO1dBMUZGOzs7WUFFK0I7YUFESXd1QzthQUFmNkM7YUFDVyx5QkFIWkYsV0FFZ0IzQzthQUNKOzt5QkFIOUI1dUMsV0FFbUJ5eEMsT0FDTHpDLE9BQU0wQztVQUVNOztVQUczQjtXQURLQyxXQXhEVHhQO1dBd0RJbGlDLE1BeERKa2lDO1dBeURJLHNCQURBbGlDLE1Bb0ZFRztXQW5GRjs7O1lBRUo7O2FBQW1DLHlCQUgxQnV4QyxXQUV1QnpDO2FBQ0c7OzhCQUFoQk0sT0FBTW9DO1VBRUc7O1VBR0s7V0FEN0JDLFdBL0RKMVA7V0FnRWlDLHlCQUQ3QjBQLFdBNkVFenhDO1dBNUUyQjs7d0JBQWhCd3ZDLFFBQU1rQzs7VUFJVTtXQURkQyxZQW5FbkI1UDtXQW1FY2ppQyxJQW5FZGlpQztXQW9FaUMseUJBRGQ0UCxZQXlFYjN4QztXQXhFMkI7O3dCQURuQkYsSUFDRzh2QyxRQUFNZ0M7O1VBR1U7V0FEaEJDLFlBdEVqQjlQO1dBc0VZaGlDLElBdEVaZ2lDO1dBdUVpQyx5QkFEaEI4UCxZQXNFWDd4QztXQXJFMkI7O3dCQURyQkQsSUFDS2l3QyxRQUFNOEI7O29CQXFFakI5eEM7O2FBakVtQnN2QyxhQWlFbkJ0dkM7YUFqRU95a0MsVUFpRVB6a0M7YUFsRXdCK3hDLFlBMUU5QmhRO2FBMEVtQjJDLFlBMUVuQjNDO2FBMEVVSCxRQTFFVkc7WUE0RUMsb0JBRmtCMkMsZ0JBQ05EO2FBQ3FDO1lBQ2pCO3NDQUhIc04sWUFDTHpDO2FBRVE7OzBCQUh2QjFOLFFBQ0c2QyxVQUVJMkwsUUFBTTRCOzs7b0JBK0RqQmh5QztZQTNEd0M7YUFETjB2QyxjQTREbEMxdkM7YUE1RFNpeUMsV0E0RFRqeUM7YUE3RDBCa3lDLFlBL0VoQ25RO2FBK0VxQm9RLFlBL0VyQnBRO2FBK0VZQyxVQS9FWkQ7YUFpRjhDLGtCQUQvQmtRO1lBQ2Qsb0JBQVUsVUFGVUU7YUFHckI7WUFEOEM7YUFHOUMseUJBTGdDRCxZQUtQLFVBSmV4QzthQUl4Qzs7MEJBTFkxTixVQUNHaVEsV0FHRUksUUFBTUQ7OztvQkF5RGpCcHlDO1lBbkQyQjthQURWOHZDLGNBb0RqQjl2QzthQXBERnN5QyxZQXhGSnZRO2FBeUZpQyx5QkFEN0J1USxZQUFtQnhDO2FBQ1U7OzBCQUFoQjBDLFFBQU1EOzs7b0JBbURqQnZ5QztZQWhEMkI7YUFEVmt3QyxjQWlEakJsd0M7YUFqREZ5eUMsWUEzRkoxUTthQTRGaUMseUJBRDdCMFEsWUFBbUJ2QzthQUNVOzswQkFBaEJ5QyxRQUFNRDs7O1VBS1U7V0FESEUsWUFoRzlCN1E7V0FnR2M5bEMsZUFoR2Q4bEM7V0FpR2lDLHlCQURINlEsWUE0Q3hCNXlDO1dBM0MyQjs7d0JBRG5CL0QsZUFDRzYyQyxRQUFNRDs7Y0FFT0UsWUFuRzlCaFIsT0FtR2NpUixlQW5HZGpSO1VBNEg0QixTQXpCZGlSO1lBMkJtQjtzQkEzQm5CQTthQTBCUTNPO2FBQU4zbEM7YUFDaUIseUJBRGpCQSxLQWVWc0I7YUFkMkI7O2FBQ0EseUJBNUJIK3lDLFlBMkJQeDBDO2FBQ1U7O2dDQURoQkksS0FESzBsQyxRQUVMNk8sTUFBTUQ7VUFHVTtvQkEvQm5CRDtXQThCUS9OO1dBQU5rTztXQUNpQix5QkFEakJBLE9BV1ZuekM7V0FWMkI7O1dBQ0EseUJBaENIK3lDLFlBK0JQSztXQUNVOzs4QkFEaEJDLE9BREtwTyxRQUVMc08sUUFBTUQ7O29CQVNqQnR6QztZQXBDMkI7YUFEUnd6QyxjQXFDbkJ4ekM7YUFyQ0R5ekMsWUF2R0wxUjthQXdHaUMseUJBRDVCMFIsWUFBb0JEO2FBQ1E7OzBCQUFoQkcsUUFBTUQ7OztvQkFvQ2pCMXpDO1lBakMyQjthQURzQjR6QyxjQWtDakQ1ekM7YUFsQzRCNnpDLFlBMUdsQzlSO2FBMEd3Qm5oQyxTQTFHeEJtaEM7YUEwR2FsaEMsVUExR2JraEM7YUEyR2lDLHlCQURDOFIsWUFBcUJEO2FBQ3RCOzswQkFEcEIveUMsVUFBV0QsU0FDUG16QyxRQUFNRDs7O29CQWlDakI5ekM7WUE5QjJCO2FBRFVnMEMsY0ErQnJDaDBDO2FBL0JtQmkwQyxZQTdHekJsUzthQTZHZ0JoaEMsUUE3R2hCZ2hDO2FBOEdpQyx5QkFEUmtTLFlBQWtCRDthQUNWOzswQkFEakJqekMsUUFDQ296QyxRQUFNRDs7O2NBRUw5MkMsS0FoSGxCMmtDLE9BZ0hhN2dDLElBaEhiNmdDO1VBNEllLFVBNUJGN2dDO1dBNEJFLE9BNUJGQTtvQkE2QnVCLDhCQTdCdkJBLElBQUs5RCxLQTRCWjRDO29CQUU4Qiw4QkE5QnZCa0IsSUFBSzlELEtBNEJaNEM7O2NBc0JVLFVBdEJWQTtnQkF5Qk47K0JBekJNQTtpQkF5QjZCLHlCQXJEakI1QyxLQW9EQWkzQztpQkFDaUI7O2dDQUFoQkUsUUFBTUQ7Y0FFcEI7cUJBZCtCLDhCQXpDdkJwekMsSUFBSzlELEtBNEJaNEM7O1dBQVMsT0E1QkZrQjtvQkErQnVCLDhCQS9CdkJBLElBQUs5RCxLQTRCWjRDO29CQUk4Qiw4QkFoQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBSzhCLDhCQWpDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFNOEIsOEJBbEN2QmtCLElBQUs5RCxLQTRCWjRDO29CQU84Qiw4QkFuQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBUThCLDhCQXBDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFTOEIsOEJBckN2QmtCLElBQUs5RCxLQTRCWjRDO29CQVU4Qiw4QkF0Q3ZCa0IsSUFBSzlELEtBNEJaNEM7O2tCQWNxQncwQyxZQTFDZHR6QyxPQTBDSytnQyxVQTFDTC9nQztxQkEwRGZrekM7MEJBaEJvQm5TLFVBQVN1UyxhQTFDVHAzQyxLQTRCWjRDOztjQWtCTjtlQUY2QnkwQyxZQTVDaEJ2ekM7ZUE0Q09naEMsVUE1Q1BoaEM7ZUE4Q2Isb0NBRjZCdXpDLFlBNUNYcjNDLEtBNEJaNEM7ZUFrQk47Ozs7K0JBRm9Ca2lDLFVBQ0gwUyxhQUEyQkQsUUFBTUQ7cUJBTmQsOEJBdkN2Qnh6QyxJQUFLOUQsS0E0Qlo0QztxQkFZOEIsOEJBeEN2QmtCLElBQUs5RCxLQTRCWjRDOztNQXZCSCxtQkFBbUI7YUFxRHhCbzBDLHVCQUtFbHpDLElBQUk2Z0MsSUFBSS9oQztNQUN1QiwwQkFEM0IraEMsSUFBSS9oQyxPQUN1QjtvQkFEL0JrQixJQUNlNGpDLE9BQU01a0MsUUFDd0I7YUFqTTNDMjBDLFlBTUY5UyxJQUFJL2hDO01BQWUseUJBQW5CK2hDLElBQUkvaEM7TUFBZSxnQ0FDaUIsSUFBdkI4a0MsY0FBdUIsT0FBdkJBO01BQ1YsbUJBQW1CO2FBcVN4QmdRLE9BUUUvUyxJQUFJL2hDLE9BQ1EsbUJBRForaEMsSUFDWSxVQUFXLEtBRG5CL2hDLFFBQ2dDO2FBTXRDKzBDLFlBQVlyUixNQUFNN0IsTUFBTS9oQztNQUMxQjtpQ0FEMEJBO09BQzFCLGFBRG9CK2hDLE1BQU42QjtPQUdaLFlBSGtCN0I7TUFHbEIsR0FERW1ULFdBREEvdkMsSUFhaUIsT0FkS25GO01BQzFCLElBY0UsV0FmWWlrQyxjQWVGLFdBYlJpUjtNQWFRLE9BZkVqUjtlQWlCRCxPQWpCYWprQyxNQWVwQjJHLE1BZEZ4QjtlQWlCUyxPQWxCYW5GLE1BZXBCMkcsSUFiRnV1QyxVQURBL3ZDOzs7U0FrQlcsT0FsQlhBOztXQWtCeUQ7OzthQUFsQyxnQkFuQkRuRjs7OzthQW1Ca0IsZ0JBbkJsQkE7Ozs7YUFtQm1DLGdCQW5CbkNBOzs7YUFvQnRCLGVBTEUyRyxNQUtjLGdCQXBCTTNHO2FBcUJ0QixPQXJCc0JBLE1BZXBCMkcsS0FiRnV1QyxVQURBL3ZDOzs7U0l2eEJFOztXSjR5Qm9CLE9BckJ0QkEsY0FxQnNCLGdCQXRCQW5GOzthQXNCbUM7OztlQUFqQixnQkF0QmxCQTs7OztlQXNCbUMsZ0JBdEJuQ0E7OztlQXVCdEIsZUFSRTJHLE1BUWMsZ0JBdkJNM0c7ZUF3QnRCLE9BeEJzQkEsTUFlcEIyRyxLQWJGdXVDLFVBREEvdkM7Ozt1QkF5QkEsT0ExQnNCbkYsTUFlcEIyRyxJQWJGdXVDLFVBREEvdkM7TUEyQkYsNEJBYkl3QixJQWFzQjthQUcxQnd1QyxrQkFBa0JuMkMsS0FBS2dCO01BQ2Q7a0JBRFNoQjtPQUNULDBCQURjZ0I7T0FHbkIsa0JBSG1CQTs7TUFHbkIsU0FDSndFOzs7Ozs7Ozs7OztnQkFGRVcsT0FEQWhHLHVCQUNBZ0c7O2VBT3NEOzs7aUJBQWpCLGdCQVRoQm5GOzs7O2lCQVNpQyxnQkFUakNBOzs7aUJBVWIsSUFBTm8xQyxNQUFNLE9BVFJqMkM7aUJBVUYsZUFESWkyQyxRQUNZLGdCQVhPcDFDO2lCQVl2QixPQVp1QkEsTUFVbkJvMUMsT0FURmoyQyxTQUNBZ0c7aUJBVUYsNEJBRklpd0M7Ozs7Ozs7Ozs7OztRQU53QixpQkFGMUJqd0MsT0FEQWhHO1VBSVEsSUFBTjJrQixNQUFNLE9BSlIza0I7VUFLRixlQURJMmtCLFFBREp0ZjtVQUdBLE9BUHVCeEUsTUFLbkI4akIsT0FKRjNrQixTQUNBZ0c7VUFLRiw0QkFGSTJlO01BU3NDLGVBWnhDM2UsTUFEQWhHO1FBY1EsSUFBTndILElBQU0sT0FkUnhIO1FBZUYsT0FoQnVCYSxNQWVuQjJHLElBZEZ4SCxTQUNBZ0c7UUFjRiw0QkFESXdCO01BSUosT0FuQnVCM0csR0FtQnBCO2FBR0hxMUMsc0JBQXNCcjFDO01BQ2Q7dUJBRGNBO09BQ2Qsd0JBQU51a0M7T0FFTSxXQURON2dDO01BRUosaUJBSEk2Z0MsUUFFQTU5QixNQURBakQ7TUFFSiw0QkFESWlELElBRXNCO2FBcUN4QjJ1QyxnQkFBZ0J4MUMsTUFBTWQ7TUFDWDtrQkFEV0E7T0FFWCx3QkFGS2M7T0FHTjtNQUNWLGdCQURJeUc7TUFFSixrQkFGSUEsSUFIWXpHO01BTWhCLGdCQUhJeUc7TUFJSixrQkFKSUEsSUFJa0IsNEJBTmxCcEg7TUFPSixnQkFMSW9ILElBREFndkM7TUFNSix1QkFMSWh2QyxJQU1lO2FBRW5CaXZDLGtCQUFrQnQyQyxNQUFNNEM7TUFDMUIsU0FEb0I1QztRQUdsQix1Q0FId0I0QyxXQUd4Qjs7Y0FFRTZCO1VBQ0U7NkNBTm9CN0IsRUFLdEI2QjtZQUNFLDRCQUNjO1lBRGQsU0FERkE7OztRQUZGO1NBT0UsT0FOSS9CO1NBUUk7O1lBRlIsc0JBVnNCRSxPQUdwQjJ6QztTQVNNO3NCQUVGanhDLEdBQUksZUFGUitCLElBQ0ErM0IsT0FDSTk1QixHQUFJLGlCQUE4QjtTQUZoQyxVQVROaXhDO1NBU00sMkJBWmMzekM7U0FZZDs7Y0FJVjFFO1VBQ0U7Z0JBQ0VvSCxFQURGLHVCQWpCc0IxQyxFQWdCeEIxRTtZQUNFLE9BQ0VvSDthQUVLLElBRkxBOztjQUNFLFNBSkZ1RixTQUlxQixvQkFBcUIsY0FBVyxJQURyRHZGO1lBREYsU0FERnBIOzs7UUFNQSw0QkFWSW1KO01BV0MsT0F2Qm1CekUsQ0F1QmxCO2FBR042ekMsWUFBWXoyQyxNQUFNMEM7TUF0RUEsT0FzRU4xQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM2Qyx5QkFEN0NBLE1BQzZDLHFCQUR2QzBDLEdBQzBDO2FBQzVEZzBDLGNBQWMxMkMsTUFBTTBDO01BeERELE9Bd0RMMUM7Ozs7Ozs7Ozs7Ozs7Ozs7TUFDOEMseUJBRDlDQSxNQUM4QyxxQkFEeEMwQyxHQUMyQzthQUMvRGkwQyxrQkFBa0IzMkMsTUFBTTBDO01BbERMLE9Ba0REMUM7Ozs7Ozs7Ozs7Ozs7Ozs7TUFDOEMseUJBRDlDQSxNQUM4QyxxQkFEeEMwQyxHQUMyQzthQUNuRWswQyxjQUFjNTJDLE1BQU0wQztNQXBFRCxPQW9FTDFDOzs7Ozs7Ozs7Ozs7Ozs7O01BQzhDLHlCQUQ5Q0EsTUFDOEMsdUJBRHhDMEMsR0FDMkM7YUFJL0RtMEMsY0FBY2oyQyxNQUFNZCxLQUFLaUQ7TUFDM0IsU0FBSSt6QztRQUNGLE9BRmNsMkM7cUJBRVZtMkM7OztRQUtKLHVDQVB5QmgwQyxFQUFMakQsS0FFaEJpM0MsS0FLMEI7TUFOaEMsU0FlSUMsaUJBQWlCbDJDO1FBQVksc0NBaEJOaUM7UUFnQk07aUJBaEJOQTtvQ0FnQk5qQyxHQUdGO01BbEJuQixPQURnQkY7O1NBeUJxQztnQ0FBNUIsZ0JBekJUQSxNQUFNZCxNQUFLaUQ7VUFTekIsMEJBRG9CakM7VUFFSDVDO1NBQ2Y7Y0FEZUEsTUFEYitIOzs7YUFHTSwwQkFKVW5GLElBRUg1QyxHQUVQOzs7OzthSWo3Qk4sZUptN0JPLFFBSk1BO2FBRVA7eUJBSlU0QyxJQU9RLElBUFJBO2tCQVFsQmsyQztlQUtTO2VBQ3VCO2VBQ0w7Z0JBS1kseUJBQTVCLGdCQTVCQ3AyQyxNQUFNZCxNQUFLaUQsR0E0QmtCO2FBVzNDazBDLGdCQUFnQmoyQztNQUNSLElBQU5xRyxJQUFNO01BQ1YsYUFESUEsSUFEY3JHO01BRWxCLHVCQURJcUcsSUFFZTthQVliNnZDLHNCQUdKL2QsRUFBRTNvQixJQUFJdXlCO1VBQU4vQixNQUFFdndCLFVBQUlxMUI7TUFBTztpQkFBUEE7UUF1Rk4sa0JBdkZBOUUsSUFBRXZ3Qjs7UUFBVyxPQUFQcTFCOztXQUVOLElBREsxbkMsS0FEQzBuQztXQUVOLGdCQUFJeGdDO2FBQ0YsSUFBSTZ4QyxXQUhKMW1DLE1BRUVuTCxHQUNGLG1CQUhGMDdCLElBR01tVyxRQUZELzRDLEtBR3VCOztXQUU1QixJQURVQyxPQUxKeW5DO1dBTU4sZ0JBQUl4Z0M7YUEvQkk7MEJBK0JKQTtjQS9CSSx3QkFBTnhFO2NBRU0sV0FETjBEO2FBRUosaUJBSEkxRCxNQUVBMkcsTUFEQWpEO2FBRE0sSUFnQ0YyeUMsV0FQSjFtQyxNQXRCSixxQkFESWhKO29CQW9CRTJ2QyxZQUdKcFcsSUFPTW1XLFFBRkk5NEMsT0FHa0I7O2VBQ2ZDLE9BVFB3bkMsU0FTRWxtQyxJQVRGa21DO2tCQW9KTnVSLGFBcEpBclcsSUFBRXZ3QixNQVNXblMsT0FBTHNCLGFBQ3lCa0IsS0FBTyxPQUFQQSxHQUFVOztlQUN6QnZDLE9BWFp1bkMsU0FXT2ptQyxNQVhQaW1DO2tCQW9KTnVSLGFBcEpBclcsSUFBRXZ3QixNQVdnQmxTLE9BQUxzQixNQTlKYnMyQzs7ZUFnS3VCMzNDLE9BYmpCc25DLFNBYVdobUMsS0FiWGdtQyxTQWFNL2xDLE1BYk4rbEMsU0FhRDlsQyxNQWJDOGxDO2tCQXdLTndSO29CQXhLQXRXLElBQUV2d0IsTUFhcUJqUyxPQUFYdUIsTUFBS0QsS0FqRmpCMjJDLFlBaUZLejJDOzs7WUFFb0J2QixPQWZuQnFuQztZQWVhN2xDLE9BZmI2bEM7WUFlUTVsQyxNQWZSNGxDO1lBZUMzbEMsUUFmRDJsQztrQkF3S053UjtvQkF4S0F0VyxJQUFFdndCLE1BZXVCaFMsT0FBWHlCLE1BQUtELE9BakZuQnkyQyxjQWlGT3YyQzs7O1lBRXNCekIsT0FqQnZCb25DO1lBaUJpQjFsQyxPQWpCakIwbEM7WUFpQll6bEMsTUFqQlp5bEM7WUFpQkt4bEMsUUFqQkx3bEM7a0JBd0tOd1I7b0JBeEtBdFcsSUFBRXZ3QixNQWlCMkIvUixPQUFYMkIsTUFBS0QsT0FqRnZCdTJDLGtCQWlGV3IyQzs7O1lBRWMzQixPQW5CbkJtbkM7WUFtQmF2bEMsT0FuQmJ1bEM7WUFtQlF0bEMsTUFuQlJzbEM7WUFtQkNybEMsUUFuQkRxbEM7a0JBd0tOd1I7b0JBeEtBdFcsSUFBRXZ3QixNQW1CdUI5UixPQUFYNkIsTUFBS0QsT0FqRm5CcTJDLGNBaUZPbjJDOztlQUVrQjdCLE9BckJuQmtuQyxTQXFCYXBsQyxPQXJCYm9sQyxTQXFCUW5sQyxNQXJCUm1sQyxTQXFCQ2xsQyxNQXJCRGtsQztXQXlOd0IsVUFwTWhCbmxDO3VCQUFLRDtjQThNbkIsT0E5TW1CQTtnQ0E4TWY4USxFQUFFek87eUJBQ00sSUFBTmpDLElBQU0sY0EvTUxGLE1BOE1INFEsRUFBRXpPO3lCQUNNLG1CQXBPWmkrQixPQUFFdndCLE1Bb09JM1AsS0EvTW1CbEMsT0FnTnVCO2dDQVY1Q21FO3lCQUNROzBCQUFOakM7MkJBQU0sY0F2TUxGLE1BdU15Qix3QkF2TXpCQSxPQXNNSG1DO3lCQUNRLG1CQTVOWmkrQixPQUFFdndCLE1BNE5JM1AsS0F2TW1CbEMsT0F3TXVCO2FBRWhELElBRDBCNFMsRUF6TVA5UTthQTBNbkIsZ0JBQUlxQztlQUNRLElBQU5qQyxJQUFNLGNBM01MRixNQXlNbUI0USxFQUN0QnpPO2VBQ1EsbUJBaE9aaStCLE9BQUV2d0IsTUFnT0kzUCxLQTNNbUJsQyxPQTRNdUI7O2FBUmxCLFNBcE1oQitCOzt5QkFBS0Q7O2tDQTJOZjhRLEVBQUV6TzsyQkFDTSxJQUFOakMsSUFBTSxzQkFBb0IsY0E1TnpCRixNQTJOSDRRLEVBQUV6TzsyQkFDTSxtQkFqUFppK0IsT0FBRXZ3QixNQWlQSTNQLEtBNU5tQmxDLE9BNk51QjtrQ0FYNUNtRTsyQkFDUTs4Q0FuTkxuQyxNQW1OeUIsd0JBbk56QkEsT0FrTkhtQzs0QkFFUyw0QkFEUGpDOzJCQUNPLG1CQXpPYmtnQyxPQUFFdndCLE1BeU9JNDBCLE9BcE5tQnptQyxPQXFOd0I7bUJBQ1gyNEMsSUF0Tm5CNzJDOytCQXVOZnFDO2lCQUNRLElBQU5qQyxJQUFNLHNCQUFvQixjQXhOekJGLE1Bc04rQjIyQyxJQUNsQ3gwQztpQkFDUSxtQkE3T1ppK0IsT0FBRXZ3QixNQTZPSTNQLEtBeE5tQmxDLE9BeU51QjtzQkF6TmxDK0I7dUJBQUtEOztnQ0F3T2Y0c0MsRUFBRTk3QixFQUFFek87eUJBQ0ksSUFBTmpDLElBQU0saUJBRFJ3c0MsRUFDNEIsY0F6T3pCMXNDLE1Bd09ENFEsRUFBRXpPO3lCQUNJLG1CQTlQWmkrQixPQUFFdndCLE1BOFBJM1AsS0F6T21CbEMsT0EwT3VCO2dDQVg1QzB1QyxFQUFFdnFDO3lCQUNNOzRDQWhPTG5DLE1BZ095Qix3QkFoT3pCQSxPQStORG1DOzBCQUVPLHVCQUZUdXFDLEVBQ0V4c0M7eUJBQ08sbUJBdFBia2dDLE9BQUV2d0IsTUFzUEk0MEIsT0FqT21Cem1DLE9Ba093QjtpQkFDaEI0NEMsSUFuT2Q5MkM7NkJBb09mNHNDLEVBQUV2cUM7ZUFDTSxJQUFOakMsSUFBTSxpQkFEUndzQyxFQUM0QixjQXJPekIxc0MsTUFtTzBCNDJDLElBQzNCejBDO2VBQ00sbUJBMVBaaStCLE9BQUV2d0IsTUEwUEkzUCxLQXJPbUJsQyxPQXNPdUI7O2VBcE9yQ0UsT0F2QkxnbkMsU0F1QkFqbEMsTUF2QkFpbEM7a0JBb0pOdVIsYUFwSkFyVyxJQUFFdndCLE1BdUJTM1IsT0FBTCtCLE1PdjNDTm9EOztXUDA0Q0EsVUExQ002aEMsU0EwQ04sU0ExQ0VyMUIsbUJBQUlxMUI7Ozs7O1lBNENVaGxDLElBNUNWZ2xDO1lBQUoxZ0IsZUE0Q2N0a0I7WUE1Q2QyUDtZQUFJcTFCOzs7OztZQThDUS9rQyxJQTlDUitrQztZQUFKMlIsZUE4Q1kxMkM7WUE5Q1owUDtZQUFJcTFCOzs7V0FrREc7WUFEaUI5bUMsT0FqRHBCOG1DO1lBaURTTCxVQWpEVEs7WUFrREcsbUJBRE1MO1dBQ04sZ0JBQ0oza0MsS0FDSCxtQkFwREZrZ0MsT0FBRXZ3QixNQWtERTVSLElBRHNCRyxPQUlzQjs7ZUFDeEJDLFFBdERsQjZtQyxTQXNEVzlrQyxNQXREWDhrQzs7YUF1RE4sSUFBYS9DO2FBQ1g7c0JBeERGL0IsSUFBRXZ3QixNQXdEQSxXQUFZLE9BRERzeUIsSUFESS9oQyxPQUFPL0IsU0FFYzs7V0E5QnRDLElBRE1DLFFBekJBNG1DO1dBMEJOLGdCQUFJMWpDLEVBQUVXO2FBQUs7c0JBMUJYaStCO3lCQUFFdndCLGVBMEI0Q3pDLEdBQUssa0JBQS9DNUwsRUFBMEM0TCxFQUF4Q2pMLEVBQWtEO3NCQURsRDdELFFBQ3lEOztXQUUvRCxJQURNQyxRQTNCQTJtQztXQTRCTixnQkFBSTFqQyxHQUFLLG1CQTVCVDQrQixPQUFFdndCLE1BNEJFck8sR0FERWpELFFBQzBDOzs7WUE1QjFDdXZDO1lBMkVVbnRDLFdBM0VWdWtDO1lBQUo0UixlQTJFY24yQztZQTNFZGtQO1lBQUlxMUI7Ozs7OztjQTZFdUMxbUMsUUE3RXZDMG1DOzs7Y0FBTjZSO3dCQUFFbm5DLElBQUYyb0IsRUE2RTZDLzZCOzBCQTdFN0M0aUMsSUE4RU80VzttQkFDTCxtQkEvRUZ6ZSxLQUFFM29CLE9BOEVLb25DLE9BRHNDeDVDLEtBRXFCO3dCQS9FbEU0aUM7c0JBQUV2d0IsTUFBRnV3QixJQTZFNkM1aEM7Y0E3RTdDNGhDO2NBQUV2d0I7Y0FBSXExQjs7O1lBaUZ1QzFrQyxRQWpGdkMwa0M7OztZQUFOK1I7c0JBQUVybkMsSUFBRjJvQixFQWlGNkMvNkI7d0JBakY3QzRpQyxJQWtGTzRXLE1BQ0wsbUJBbkZGemUsS0FBRTNvQixPQWtGS29uQyxPQURzQ3g1QyxLQUVxQjtzQkFuRmxFNGlDO29CQUFFdndCLE1BQUZ1d0IsSUFpRjZDNS9CO1lBakY3QzQvQjtZQUFFdndCO1lBQUlxMUI7O2tCQXdDTjs7ZUFrQnFCemtDLFFBMURmeWtDLFNBMkRGcVIsV0EzREYxbUM7a0NBNERPLG1CQTVEVHV3QixJQTJESW1XLFFBRGlCOTFDLFFBRWM7O1dBS25DLElBSnFCQyxRQTdEZndrQztXQWlFTixnQkFBSXBqQzthQUNrQyxJQUFoQ3kwQyxXQWxFSjFtQyxNQWtFb0Msd0JBRGxDL047YUFDa0MsbUJBbEV0Q3MrQixJQWtFTW1XLFFBTGU3MUMsUUFNTzs7V0FFNUIsSUFEZUUsUUFwRVRza0M7V0FxRU4sZ0JBQUl4Z0M7YUFDRixJQUFJNnhDLFdBdEVKMW1DLE1BcUVFbkwsR0FDRixtQkF0RUYwN0IsSUFzRU1tVyxRQUZTMzFDLFFBR2E7O2VBQ1JFLFFBeEVkb2tDLFNBd0VTNWpDLElBeEVUNGpDOzs7b0JBMkZOZ1MsK0JBM0ZBOVcsSUFBRXZ3QixNQXdFYXZPLElBQUtSOztvQkFtQnBCbzJDLHdCQTNGQTlXLElBQUV2d0IsTUF3RWF2TyxJQUFLUjs7V0ExQ1M7WUFEWEMsUUE3Qlpta0M7WUE2QlMxakMsRUE3QlQwakM7WUE2QkV6akMsTUE3QkZ5akM7WUE4QnVCLGdCQURkMWpDO1dBQ2M7O29CQWtPN0IyMUMsd0JBaFFBL1csSUFBRXZ3QixNQTZCZ0I5TyxRQUFWVTs7b0JBbU9SMDFDLGlCQWhRQS9XLElBQUV2d0IsTUE2QmdCOU8sUUFBVlUsYUEwREg7YUFJTHkxQyw2QkFJQTNlLEVBQUUzb0IsSUFBSXRPLElBQUk2Z0M7TUFBTyxVQUFYN2dDO09BQVcsT0FBWEE7O1VBQzZCOzttQkE2Q25DODFDLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBRXlCOzttQkE0Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5QjtnQkFheUI7O1VBR0E7O21CQThCbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztPQUFPLE9BQVg3Z0M7O1VBRzZCOzttQkEyQ25DODFDLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBSXlCOzttQkEwQ25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFLeUI7O21CQXlDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQU15Qjs7bUJBd0NuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBT3lCOzttQkF1Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFReUI7O21CQXNDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVN5Qjs7bUJBcUNuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBVXlCOzttQkFvQ25DaVYsNEJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFXeUI7O21CQW1DbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVl5QixJQUFWL2hDLE1BWm5Ca0I7VUFZNkI7O21CQVFuQysxQyw2QkFwQkE5ZSxFQUFFM29CLElBWXVCeFAsTUFaZitoQzt3Q0FvQlZrVixxQkFwQkE5ZSxFQUFFM29CLElBWXVCeFAsTUFaZitoQzs7VUFjeUI7O21CQWdDbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQWV5Qjs7bUJBK0JuQ2lWLDRCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUIsTUFnQm1EO2FBSTdEa1YsMEJBSUE5ZSxFQUFFM29CLElBQUl4UCxNQUFNK2hDO01BQU8sVUFBYi9oQztRQWVxQjs7aUJBTzNCZzNDLDJCQXRCQTdlLEVBQUUzb0IsSUFBVXV5QjtzQ0FzQlppVixvQkF0QkE3ZSxFQUFFM29CLElBQVV1eUI7O09BQU8sT0FBYi9oQzs7VUFDcUIsSUFBbkI1QyxLQURGNEM7VUFDcUIsdUJBQVMsdUJBRHBDbTRCLEVBQUUzb0IsSUFDTXBTLEtBREkya0MsSUFDc0Q7O1VBQ3ZDLElBQWpCMWtDLE9BRkoyQztVQUVxQix1QkFBUyx1QkFGcENtNEIsRUFBRTNvQixJQUVRblMsT0FGRTBrQyxJQUVzRDs7VUFDdkMsSUFBcEJ6a0MsT0FIRDBDO1VBR3FCLHVCQUFTLHVCQUhwQ200QixFQUFFM29CLElBR0tsUyxPQUhLeWtDLElBR3NEOztVQUN2QyxJQUFsQnhrQyxPQUpIeUM7VUFJcUIsdUJBQVMsdUJBSnBDbTRCLEVBQUUzb0IsSUFJT2pTLE9BSkd3a0MsSUFJc0Q7O1VBQ3ZDLElBQWR2a0MsT0FMUHdDO1VBS3FCLHVCQUFTLHVCQUxwQ200QixFQUFFM29CLElBS1doUyxPQUxEdWtDLElBS3NEOztVQUN2QyxJQUFsQnRrQyxPQU5IdUM7VUFNcUIsdUJBQVMsdUJBTnBDbTRCLEVBQUUzb0IsSUFNTy9SLE9BTkdza0MsSUFNc0Q7O1VBQ3ZDLElBQWxCcmtDLE9BUEhzQztVQU9xQix1QkFBUyx1QkFQcENtNEIsRUFBRTNvQixJQU9POVIsT0FQR3FrQyxJQU9zRDs7VUFDdkMsSUFBbkJwa0MsT0FSRnFDO1VBUXFCLHVCQUFTLHVCQVJwQ200QixFQUFFM29CLElBUU03UixPQVJJb2tDLElBUXNEOztVQU12QyxJQUFUbmtDLE9BZFpvQztVQWNxQix1QkFBUyx1QkFkcENtNEIsRUFBRTNvQixJQWNnQjVSLE9BZE5ta0MsSUFjc0Q7O1VBR3pEO1dBRGtCamtDLE9BaEJyQmtDO1dBZ0JnQnhCLElBaEJoQndCO1dBZ0JXakMsSUFoQlhpQztXQWlCRyxTQUFNLEtBREVqQyxLQUFLUztVQUNiO1lBQ3NCLHVCQWxCL0IyNUIsRUFBRTNvQixJQWtCNkIsYUFEM0IzUixHQUR1QkMsUUFoQmZpa0MsSUFrQjZDOztVQVQ5QixJQUFsQi9qQyxPQVRIZ0M7VUFTcUI7WUFBVyx1QkFUdENtNEIsRUFBRTNvQixJQVNPeFIsT0FURytqQyxJQVN3RDs7VUFDekMsSUFBbEI5akMsUUFWSCtCO1VBVXFCLHVCQUFTLHVCQVZwQ200QixFQUFFM29CLElBVU92UixRQVZHOGpDLElBVXNEOztVQUN2QyxJQUFwQjdqQyxRQVhEOEI7VUFXcUIsdUJBQVMsdUJBWHBDbTRCLEVBQUUzb0IsSUFXS3RSLFFBWEs2akMsSUFXc0Q7aUJBQ3ZDO2lCQUNBLDhCQUs4QjthQUl6RGlWLHlCQUdBN2UsRUFBRTNvQixJQUFJdXlCO01BQ1IsWUFESXZ5QjtNQUNKOztlQXBKTTBtQyx3QkFtSkovZCxPQUFNNEo7b0NBbkpGbVUsaUJBbUpKL2QsT0FBTTRKLEtBQzhEO2FBK0dwRWdWLHNCQUlFNWUsRUFBRTNvQixJQUFJcFMsS0FBS2lFLE1BQU1EO01BQUssR0FBWEM7UUFHYixJQURZOHBDLFFBRkM5cEM7UUFHYixnQkFBSVU7VUFDMkIsbUJBSjdCbzJCLEVBQUUzb0IsSUFBSXBTLEtBRUkrdEMsUUFFbUIsV0FKWi9wQyxFQUdmVyxHQUNnQztNQUhyQixZQURYeU4sSUFBZXBPO01BQ0o7O2VBeFFYODBDLHdCQXVRRi9kLE9BQU0vNkI7b0NBdlFKODRDLGlCQXVRRi9kLE9BQU0vNkIsTUFJNEI7YUEzUWhDZzVDLFlBR0pqZSxFQUFFM29CLElBQUl1eUI7TUo5K0NYLHVCSTIrQ1NtVSxnQkFHSi9kLEVBQUUzb0IsSUFBSXV5QjthQTJGTnFWLG1CQUlBamYsRUFBRTNvQixJQUFJdE8sSUFBSTZnQztNSjdrRGYsdUJJeWtESytVLHVCQUlBM2UsRUFBRTNvQixJQUFJdE8sSUFBSTZnQzthQW9CVm1WLGdCQUlBL2UsRUFBRTNvQixJQUFJeFAsTUFBTStoQztNSnJtRGpCLHVCSWltREtrVixvQkFJQTllLEVBQUUzb0IsSUFBSXhQLE1BQU0raEM7YUF5SVpvVixZQUlFaGYsRUFBRTNvQixJQUFJcFMsS0FBS2lFLE1BQU1EO01KbHZEeEIsdUJJOHVESzIxQyxnQkFJRTVlLEVBQUUzb0IsSUFBSXBTLEtBQUtpRSxNQUFNRDthQWhIbkJpMUMsYUFJRWxlLEVBQUUzb0IsSUFBSXV5QixJQUFJbmpDLElBQUk4bUM7TUFBUyxVQUFiOW1DO09BRVosZ0JBQUltRDtTQUNrQyxJQUFoQ28wQyxXQUhGM21DLElBR2tDLFdBSHRCazJCLE1BRVozakM7U0FDa0MsbUJBSHBDbzJCLEVBR0lnZSxRQUhFcFUsSUFJbUI7O1FBSkYsU0FBYm5qQztjQUtRaWpDLE1BTFJqakMsT0FLQzhrQyxNQUxEOWtDOzBCQU1SbUQ7WUFDa0MsSUFBaENvMEMsV0FQRjNtQyxJQU9rQyxZQUZ6QmswQixNQUFPN0IsTUFFMEMsV0FQOUM2RCxNQU1aM2pDO1lBQ2tDLG1CQVBwQ28yQixFQU9JZ2UsUUFQRXBVLElBUW1CO1FBRTNCLElBRFlnQyxRQVRBbmxDO1FBVVosZ0JBQUkwdEMsRUFBRXZxQztVQUNnQyxJQUFoQ28wQyxXQVhGM21DLElBV2tDLFlBRjFCdTBCLFFBQ1J1SSxFQUNzRCxXQVgxQzVHLE1BVVYzakM7VUFDZ0MsbUJBWHBDbzJCLEVBV0lnZSxRQVhFcFUsSUFZbUI7YUFJM0J1VSwyQkFLRW5lLEVBQUUzb0IsSUFBSXV5QixJQUFJbmpDLElBQUlFLEtBQUs0bUMsTUFBTTFtQztNQUFTLFVBQXhCSjtrQkFBSUU7U0FVaEIsT0FWZ0JBOzJCQVVaMFIsRUFBRXpPO29CQUNNLElBQU5qQyxJQUFNLGtCQURSMFEsRUFDNEIsV0FYWGsxQixNQUFNMW1DLE1BVXJCK0M7b0JBQ00sbUJBWFZvMkIsS0FBRTNvQixJQVdFMVAsS0FYRWlpQyxJQVl3QzsyQkFWNUNoZ0M7b0JBQ1EsSUFBTmpDLElBQU0sV0FIUzRsQyxNQUFNMW1DLE1BRXZCK0M7b0JBQ1EsbUJBSFZvMkIsS0FBRTNvQixJQUdFMVAsS0FIRWlpQyxJQUl3QztRQUVoRCxJQUQwQnZ4QixFQUxWMVI7UUFNaEIsZ0JBQUlpRDtVQUNRLElBQU5qQyxJQUFNLGtCQUZjMFEsRUFFTSxXQVBYazFCLE1BQU0xbUMsTUFNdkIrQztVQUNRLG1CQVBWbzJCLEtBQUUzb0IsSUFPRTFQLEtBUEVpaUMsSUFRd0M7O1FBUlosU0FBeEJuakM7O29CQUFJRTs7NkJBc0JaMFIsRUFBRXpPO3NCQUNNO3VCQUFOakM7d0JBQU07b0NBQW9CLGtCQUQ1QjBRLEVBQ2lELFdBdkJoQ2sxQixNQUFNMW1DLE1Bc0JyQitDO3NCQUNNLG1CQXZCVm8yQixLQUFFM29CLElBdUJFMVAsS0F2QkVpaUMsSUF3QndDOzZCQVY1Q2hnQztzQkFDUSxJQUFOakMsSUFBTSxzQkFBb0IsV0FmWDRsQyxNQUFNMW1DLE1BY3ZCK0M7c0JBQ1EsbUJBZlZvMkIsS0FBRTNvQixJQWVFMVAsS0FmRWlpQyxJQWdCd0M7Y0FDVndVLElBakJ0QnozQzswQkFrQlppRDtZQUNRO2FBQU5qQztjQUFNOzBCQUFvQixrQkFGTXkyQyxJQUVlLFdBbkJoQzdRLE1BQU0xbUMsTUFrQnZCK0M7WUFDUSxtQkFuQlZvMkIsS0FBRTNvQixJQW1CRTFQLEtBbkJFaWlDLElBb0J3QztpQkFwQnBDbmpDO2tCQUFJRTs7MkJBa0Nad3RDLEVBQUU5N0IsRUFBRXpPO29CQUNJO3FCQUFOakM7c0JBQU07NkJBRFJ3c0MsRUFDNEIsa0JBRDFCOTdCLEVBQytDLFdBbkNoQ2sxQixNQUFNMW1DLE1Ba0NuQitDO29CQUNJLG1CQW5DVm8yQixLQUFFM29CLElBbUNFMVAsS0FuQ0VpaUMsSUFvQ3dDOzJCQVY1Q3VLLEVBQUV2cUM7b0JBQ00sSUFBTmpDLElBQU0saUJBRFJ3c0MsRUFDNEIsV0EzQlg1RyxNQUFNMW1DLE1BMEJyQitDO29CQUNNLG1CQTNCVm8yQixLQUFFM29CLElBMkJFMVAsS0EzQkVpaUMsSUE0QndDO1lBQ2Z5VSxJQTdCakIxM0M7d0JBOEJad3RDLEVBQUV2cUM7VUFDTTtXQUFOakM7WUFBTTttQkFEUndzQyxFQUM0QixrQkFGQ2tLLElBRW9CLFdBL0JoQzlRLE1BQU0xbUMsTUE4QnJCK0M7VUFDTSxtQkEvQlZvMkIsS0FBRTNvQixJQStCRTFQLEtBL0JFaWlDLElBZ0N3QyxFQUlBO2FBMkQ1Q3NWLHVCQUVGbGYsRUFBRW5yQixFQUFFKzBCO1VBQUovQixNQUFJOEU7TUFBTztpQkFBUEE7UUFzRUYsa0JBdEVGOUUsSUFBRWh6Qjs7UUFBUyxPQUFQODNCOztXQUVGLFNBRkVBLFNBRUksa0JBRlI5RSxJQUFFaHpCLEVBQ0c1UDtXQUNHLHNCSjl2RGY7O1dJZ3dEUyxXQUpFMG5DLFNBSUksa0JBSlI5RSxJQUFFaHpCLEVBR1EzUDtXQUNGLHNCSmh3RGY7O29CSTR2RFd5bkM7O2FBTUYsV0FORUEsU0FNSSxrQkFOUjlFLElBQUVoekIsRUFLa0IxUDthQUNaLHNCSmx3RGY7OztlSW93RFMsV0FSRXduQyxTQVFJLGtCQVJSOUUsSUFBRWh6QixFQU9xQnpQO2VBQ2Ysc0JKcHdEZjthSXN3RFM7cUJBVkV1bkM7Y0FVVyxrQkFWZjlFLElBQUVoekIsRUFTcUJ4UDtjQUNmLG9CSnR3RGY7YUlzd0RlLHNCSnR3RGY7O29CSTR2RFdzbkM7O2FBWUYsV0FaRUEsU0FZSSxrQkFaUjlFLElBQUVoekIsRUFXdUJ2UDthQUNqQixzQkp4d0RmOzs7ZUkwd0RTLFdBZEVxbkMsU0FjSSxrQkFkUjlFLElBQUVoekIsRUFhMEJ0UDtlQUNwQixzQkoxd0RmO2FJNHdEUztxQkFoQkVvbkM7Y0FnQlcsa0JBaEJmOUUsSUFBRWh6QixFQWUwQnJQO2NBQ3BCLG9CSjV3RGY7YUk0d0RlLHNCSjV3RGY7O2VJNndEMEJDLE9BakJma25DLFNBaUJTaG1DLEtBakJUZ21DLFNBaUJJbG1DLElBakJKa21DO2tCQXVFTnlTLHdCQXZFRXZYLElBQUVoekIsRUFpQmlCcFAsT0FBWGdCLElBQUtFOztlQUVRaEIsT0FuQmpCZ25DLFNBbUJXN2xDLE9BbkJYNmxDLFNBbUJNam1DLE1BbkJOaW1DO2tCQXVFTnlTLHdCQXZFRXZYLElBQUVoekIsRUFtQm1CbFAsT0FBWGUsTUFBS0k7O2VBRVVqQixPQXJCckI4bUMsU0FxQmUxbEMsT0FyQmYwbEMsU0FxQlUvbEMsTUFyQlYrbEM7a0JBdUVOeVMsd0JBdkVFdlgsSUFBRWh6QixFQXFCdUJoUCxPQUFYZSxNQUFLSzs7ZUFFRW5CLFFBdkJqQjZtQyxTQXVCV3ZsQyxPQXZCWHVsQyxTQXVCTTVsQyxNQXZCTjRsQztrQkF1RU55Uyx3QkF2RUV2WCxJQUFFaHpCLEVBdUJtQi9PLFFBQVhpQixNQUFLSzs7ZUFFTXJCLFFBekJqQjRtQyxTQXlCV3BsQyxPQXpCWG9sQyxTQXlCTXpsQyxNQXpCTnlsQztrQkF1RU55Uyx3QkF2RUV2WCxJQUFFaHpCLEVBeUJtQjlPLFFBQVhtQixNQUFLSzs7b0JBekJYb2xDOzthQTRCRixZQTVCRUEsU0E0Qkksa0JBNUJSOUUsSUFBRWh6QixFQTJCZ0I3TzthQUNWLHNCSnh4RGY7OztlSTB4RFMsWUE5QkUybUMsU0E4Qkksa0JBOUJSOUUsSUFBRWh6QixFQTZCbUI1TztlQUNiLHNCSjF4RGY7YUk0eERTO3NCQWhDRTBtQztjQWdDVyxrQkFoQ2Y5RSxJQUFFaHpCLEVBK0JtQjVNO2NBQ2Isb0JKNXhEZjthSTR4RGUsc0JKNXhEZjtrQkl3eURTLFVBNUNFMGtDO2tCQThDRixVQTlDRUE7a0JBZ0RGLFVBaERFQTs7V0FrREYsWUFsREVBLFNBa0RJLGtCQWxEUjlFLElBQUVoekIsRUFpRGdCM007V0FDVixzQko5eURmOztlSSt5RCtCQyxRQW5EcEJ3a0MsU0FtRGE5a0MsTUFuRGI4a0M7O2FBb0RGLElBQWEvQzthQUVULG9CQXRETi9CLElBQUVoekIsRUFzREksV0FBWSxPQUZIKzBCLElBREUvaEMsT0FBT00sU0FHa0I7O1dBcEJ4QztvQkFsQ0V3a0M7WUFrQ1csa0JBbENmOUUsSUFBRWh6QixFQWlDSXhNO1lBQ0Usb0JKOXhEZjtXSTh4RGUsc0JKOXhEZjs7V0lneURTLFlBcENFc2tDLFNBb0NJLGtCQXBDUjlFLElBQUVoekIsRUFtQ0l0TTtXQUNFLHNCSmh5RGY7a0JJNHpEUyxVQWhFRW9rQzs7Ozs7Y0FpRXlDbmtDLFFBakV6Q21rQzs7O2NBQUo2UjswQkFpRTZDdjVDOzBCQWpFN0M0aUMsSUFrRW9Cd1gsS0FBTyxvQkFsRTNCcmYsRUFrRW9CcWYsSUFEeUJwNkMsS0FDSyxRQWxFbEQ0aUM7MEJBaUU2Q3IvQjtjQWpFN0NxL0I7Y0FBSThFOzs7WUFtRXlDaGtDLFFBbkV6Q2drQzs7O1lBQUorUjt3QkFtRTZDejVDO3dCQW5FN0M0aUMsSUFvRW9Cd1gsS0FBTyxvQkFwRTNCcmYsRUFvRW9CcWYsSUFEeUJwNkMsS0FDSyxRQXBFbEQ0aUM7d0JBbUU2Q2wvQjtZQW5FN0NrL0I7WUFBSThFOztrQkEwQ0Y7O1dBY0EsWUF4REVBLFNBd0RJLGtCQXhEUjlFLElBQUVoekIsRUF1RG1CaE07V0FDYixzQkpwekRmOztXSXN6RFMsWUExREU4akMsU0EwREksa0JBMURSOUUsSUFBRWh6QixFQXlEbUIvTDtXQUNiLHNCSnR6RGY7O1dJd3pEUyxZQTVERTZqQyxTQTRESSxrQkE1RFI5RSxJQUFFaHpCLEVBMkRhN0w7V0FDUCxzQkp4ekRmOztlSXl6RDJCczJDLFFBN0RoQjNTLFNBNkRXNWpDLElBN0RYNGpDO2tCQW5MTnNTO29DQWlQaUMsa0JBOUQvQnBYLElBQUVoekIsRUE4RGdDLE9BRG5COUwsSUFBS3UyQzs7ZUF4QkZDLFFBckNkNVMsU0FxQ0l6akMsTUFyQ0p5akM7OztvQkE4Rk42UywrQkE5RkUzWCxJQUFFaHpCLEVBcUNnQjBxQyxRQUFWcjJDOztvQkF5RFZzMkMsd0JBOUZFM1gsSUFBRWh6QixFQXFDZ0IwcUMsUUFBVnIyQyxRQWlDSDthQXdCUHMyQyw2QkFHRXhmLEVBQUVuckIsRUFBRSswQjtNQUhOO1FBT0ksbUJBQU0sd0JBSlI1SixFQUFFbnJCLEVBQUUrMEIsSUFHUTFnQztRQUNKLHNCSmoyRGY7TUkrMURTOztlQXJHQWcyQyx5QkFtR0ZsZixFQUFFbnJCLEVBQUUrMEI7b0NBbkdGc1Ysa0JBbUdGbGYsRUFBRW5yQixFQUFFKzBCLEtBSXNDO2FBdkd4Q3VWLGFBRUZuZixFQUFFbnJCLEVBQUUrMEI7TUo1dkRYLHVCSTB2RFNzVixpQkFFRmxmLEVBQUVuckIsRUFBRSswQjthQThGTjZWLG1CQUdFemYsRUFBRW5yQixFQUFFKzBCO01KNzFEWCx1QkkwMURLNFYsdUJBR0V4ZixFQUFFbnJCLEVBQUUrMEI7YUExQk53Vix3QkFJRXBmLEVBQUVuckIsRUFBRSswQixJQUFJbmpDLElBQUlFO01BQVEsVUFBWkY7a0JBQUlFO1VBTVYsR0FOVUE7WUFNRyxzQkFOZnE1QixFQUFFbnJCLEVBQUUrMEIsS0FNSSxvQko3MERmO1lJNjBEZSxzQko3MERmO1VJeTBEZSxzQkFGUjVKLEVBQUVuckIsRUFBRSswQjtVQUVJLHNCSnowRGY7UUkyMERlLHNCQUpSNUosRUFBRW5yQixFQUFFKzBCO1FBSUksc0JKMzBEZjs7UUl1MEQyQixTQUFabmpDO29CQUFJRTtZQVlWLEdBWlVBO2NBWUcsc0JBWmZxNUIsRUFBRW5yQixFQUFFKzBCLEtBWUksb0JKbjFEZjtjSW0xRGUsc0JKbjFEZjtZSSswRGUsc0JBUlI1SixFQUFFbnJCLEVBQUUrMEI7WUFRSSxzQkovMERmO1VJaTFEZSxzQkFWUjVKLEVBQUVuckIsRUFBRSswQjtVQVVJLHNCSmoxRGY7a0JJdTBEbUJqakM7VUFrQlYsR0FsQlVBO1lBa0JVOytCQWxCdEJxNUIsRUFBRW5yQixFQUFFKzBCO2FBa0JXLG9CSnoxRHRCO2FJeTFEZSxvQkp6MURmO1lJeTFEZSxzQkp6MURmO1VJcTFEc0Isc0JBZGY1SixFQUFFbnJCLEVBQUUrMEIsS0FjSSxvQkpyMURmO1VJcTFEZSxzQkpyMURmO1FJdTFEc0Isc0JBaEJmNUosRUFBRW5yQixFQUFFKzBCLEtBZ0JJLG9CSnYxRGY7UUl1MURlLHNCSnYxRGYsYUl5MURxRDthQWdCNUM4VixXQUFXN3FDLEVBQUV3QztNSnoyRHRCLElJeTJEc0JDO01BQU07aUJBQU5BO1FBZVc7O1FBZkwsT0FBTkE7O1dBRVQ7WUFEZWxQLFdBRE5rUDtZQUNHZSxFQURIZjtZQUVULDJCQURlbFA7V0FFdkIsV0FIZXlNLEVBQ0t3RDtXQUVwQixxQkFIZXhELEVBRVhwTDs7b0JBRmE2Tjs7YUFLakIsSUFEb0NDO2FBQ3BDLFdBTGUxQzthQUtDLGNBTERBO2FBS2YsSUFMaUJ5QyxNQUltQkM7O2VBRUEwVTtXQUNwQyxXQVBlcFg7V0FPQyxjQVBEQTtlQUFFeUMsTUFNbUIyVTs7O2VBTXRCaGpCLEVBWkdxTyxTQVlOcW9DLElBWk1yb0M7V0FZVyxXQVpiekMsRUFZSjhxQztXQUFpQixrQkFBZDEyQyxFQVpDNEw7aUJBYWEsSUFBbEIrcUMsSUFiT3RvQyxTQWFXLFdBYmJ6QyxFQWFMK3FDLEtBQWtCLHFCQWJiL3FDOztlQWNLQyxJQWRId0MsU0FjQXVvQyxJQWRBdm9DO1dBY1csV0FkYnpDLEVBY0VnckM7V0FBVyxtQkFBUi9xQzs7O2VBTkdrRixJQVJOMUMsU0FRRzhtQyxJQVJIOW1DO1dBU1csV0FUYnpDLEVBUUt1cEM7V0FDUSxxQkFUYnZwQyxFQVFRbUY7O2VBRUY3TixFQVZKbUwsU0FVQyttQyxJQVZEL21DO1dBV1csV0FYYnpDLEVBVUd3cEM7V0FDVSwyQkFYYnhwQyxFQVVNMUksR0FLUzthQUsxQjJ6QyxXQUFXLzBDLEVBQUVzTTtNSjczRHRCLElJNjNEc0JDO01BQU07aUJBQU5BO1FBZVc7O1FBZkwsT0FBTkE7O1dBRVQ7WUFEZWxQLFdBRE5rUDtZQUNHZSxFQURIZjtZQUVULDJCQURlbFA7V0FFdkIsV0FIZTJDLEVBQ0tzTjtXQUVwQixrQkFIZXROLEVBRVh0Qjs7b0JBRmE2Tjs7YUFLakIsSUFEb0NDO2FBQ3BDLFdBTGV4TTthQUtDLFdBTERBO2FBS2YsSUFMaUJ1TSxNQUltQkM7O2VBRUEwVTtXQUNwQyxXQVBlbGhCO1dBT0MsV0FQREE7ZUFBRXVNLE1BTW1CMlU7OztlQU10QmhqQixFQVpHcU8sU0FZTnFvQyxJQVpNcm9DO1dBWVcsV0FaYnZNLEVBWUo0MEM7V0FBaUIsa0JBQWQxMkMsRUFaQzhCO2lCQWFhLFVBYlh1TTs7ZUFjR3hDLElBZEh3QyxTQWNBc29DLElBZEF0b0M7V0FjVyxXQWRidk0sRUFjRTYwQztXQUFXLG1CQUFSOXFDOzs7ZUFOR2tGLElBUk4xQyxTQVFHOG1DLElBUkg5bUM7V0FTVyxXQVRidk0sRUFRS3F6QztXQUNRLGtCQVRicnpDLEVBUVFpUDs7ZUFFRjdOLEVBVkptTCxTQVVDK21DLElBVkQvbUMsU0FXVyxXQVhidk0sRUFVR3N6QyxLQUNVLGdCQVhidHpDLEVBVU1vQixHQUtTO2FBTTFCNHpDLFdBQVdoMUMsRUFBRXNNO01KbDVEdEIsSUlrNURzQkM7TUFBTTtpQkFBTkE7UUFlVzs7UUFmTCxPQUFOQTs7V0FFVDtZQURlbFAsV0FETmtQO1lBQ0dlLEVBREhmO1lBRVQsMkJBRGVsUDtXQUV2QixXQUhlMkMsRUFDS3NOO1dBRXBCLGtCQUhldE4sRUFFWHRCOztvQkFGYTZOOzthQUtqQixJQURvQ0M7YUFDcEMsV0FMZXhNO2FBS0MsV0FMREE7YUFLZixJQUxpQnVNLE1BSW1CQzs7ZUFFQTBVO1dBQ3BDLFdBUGVsaEI7V0FPQyxXQVBEQTtlQUFFdU0sTUFNbUIyVTs7O2VBTXRCaGpCLEVBWkdxTyxTQVlOcW9DLElBWk1yb0M7V0FZVyxXQVpidk0sRUFZSjQwQztXQUFxRCxrQkFaakQ1MEMsRUFZaUQsV0FBbEQ5QjtpQkFDYyxVQWJYcU87O2VBY0d4QyxJQWRId0MsU0FjQXNvQyxJQWRBdG9DO1dBY1csV0FkYnZNLEVBY0U2MEM7V0FBVyxtQkFBUjlxQzs7O2VBTkdrRixJQVJOMUMsU0FRRzhtQyxJQVJIOW1DO1dBU1csV0FUYnZNLEVBUUtxekM7V0FDUSxrQkFUYnJ6QyxFQVFRaVA7O2VBRUY3TixFQVZKbUwsU0FVQyttQyxJQVZEL21DLFNBV1csV0FYYnZNLEVBVUdzekMsS0FDVSxnQkFYYnR6QyxFQVVNb0IsR0FLUzthQU05QjZ6QztNQUNRLElBRGtCcFcsYUFDbEI7ZUFDTjVKLEVBQUUzb0IsS0FBTSxXQURSbkosSUFDRW1KLEtBQW1DLHlCQURyQ25KLEtBQzBEO01BRHBELG1CQUNOOHhCLElBRndCNEo7YUFTMUJxVyxtQkFBbUJ0NEM7TUFDbEIscUJBRGtCQSxZQUNKO01BQ2YsSUFBSW1GLElBQUosc0JBRm1CbkY7TUFFbkIsU0FDSXU0QztRQUFpQix5Q0FIRnY0QyxJQUdtRDtNQUR0RSxTQUVRdzRDLGFBQWFwN0M7UUpwN0QxQixJSW83RDBCdUc7UUFDbkI7YUFEbUJBLFFBRmpCd0IsSUFHYyxPQURHeEI7VUFFWCwwQkFOUzNELElBSUUyRDt5Q0FJVixPQUpVQTtVQUVYLElBQ1UsSUFIQ0E7bUJBSVQ7TUFOWixTQU9JODBDLFlBQVlyN0MsRUFBRXNVO1FKejdEdkIsSUl5N0R1Qjh6QjtRQUNoQjthQURnQkEsUUFQZHJnQyxJQVFjLE9BREFxZ0M7VUFFUiwwQkFYU3hsQyxJQVNEd2xDO1VBRVIseUJBRUMsT0FKT0E7VUFFUixJQUNVLElBSEZBO21CQUlOO01BWFosU0FZSWtULFVBQVV0N0MsRUFBRXNVO1FKOTdEckIsSUk4N0RxQjh6QjtRQUNkO2FBRGNBLFFBWlpyZ0MsSUFhYyxPQURGcWdDO1VBRU4sMEJBaEJTeGxDLElBY0h3bEM7VUFFTjs7OztVSWg3Q04sYUppN0NzQixRQUhWQTtVQUlMLE9BSktBLElBSUo7TUFDQzs7T0FDRixpQkFEUG1UO09BRVcsZUFyQkkzNEMsSUFtQmYyNEMsT0FDQUMsT0FEQUQ7T0FHUyxvQkFGVEM7T0FHTyxlQURQRTtNQUNPLEdBRFBBLFdBQ0FDO1dBQ0FDOztPQUVBO1NBQXlEO2tDQUF2QyxNQTFCSGg1QyxJQXNCZjg0QyxPQUNBQyxPQURBRDtVQUVBRTs7OztvQkFHa0I7TUFSVCxJQVNUQyxRQUFVLGFBTFZGO01BS1UsR0FBVkUsWUExQkE5ekMsSUEyQm1CO01BVlY7O1FBVXdCLHFCQVJqQzB6Qzs7OztRQVNBSzs4QkFUQUw7OztvREFlWTs7Ozs7O01JcDhDWixnQko4N0NBSztNQU9KLFVBYklGLE9BTUFFLFNBT2M7YUFPbEJDLHFCQUdBcjZDLElBQUltakM7TUFBTyxVQUFYbmpDO09BQ3NCLFlBRGxCbWpDOztRQUFPLFNBQVhuakMsWUFFZ0IwdEMsRUFGaEIxdEMsT0FFYWdELEVBRmJoRCxvQkFFYWdELEVBQUcwcUMsR0FGWnZLO1FBR2tCLElBQVY1dkIsSUFIWnZUO1FBR3NCLGFBQVZ1VCxLQUhSNHZCLEtBR3NEO2FBZTFEbVgscUJBSUF0NkMsSUFBSUUsS0FDdUJpakM7TUFiZixVQVlSampDO09BVGUsVUFTZkEsVUFDdUJpakM7O09BWFIsTUFVZmpqQyxvQkFWVTBSLEdBV2F1eEI7VUFBTjlpQztnQkFEckJMO09BR3NCLFlBRkRLLE9BQU04aUM7O2lCQUQzQm5qQyxZQUlnQjB0QyxFQUpoQjF0QyxPQUlhZ0QsRUFKYmhELG9CQUlhZ0QsRUFBRzBxQyxHQUhLcnRDLE9BQU04aUM7UUFJTCxJQUFWNXZCLElBTFp2VDtRQUtzQixhQUFWdVQsS0FKU2xULE9BQU04aUMsS0FJc0M7YUFPakVvWCxrQkFBbUJDLGdCQUFnQnQ1QztNQWlCckMsR0FqQnFCczVDO09Ba0JKLFNBbEJJQSxtQkFpQmpCRSxrQkFDS0Q7O1dBRExDO01BaUJKLFNBQUlDLHVCQUF1QmxZLFFBQVFwMEI7UUFDakMseUNBbkNtQ25OLElBa0NWdWhDLFFBQVFwMEIsSUFHaEI7TUFIbkIsU0FRSXVzQyx5QkFBeUJDO1FBQzNCLDhCQUQyQkEscUNBRUM7TUFWOUIsU0FvQklDLHVCQUF1QnJZLFFBQVEvOEIsRUFBRTFDO1FBQ25DLHlDQXZEbUM5QixJQXNEVnVoQyxRQUFRLzhCLEVBQUUxQyxFQUdsQjtNQXZCbkIsU0E0QkkrM0MsbUJBQW1CdFksUUFBUXVZLFNBQVM3ckI7UUFDdEMseUNBL0RtQ2p1QixJQThEZHVoQyxRQUFRdVksU0FBUzdyQixLQUdYO01BL0I3QixTQXF2Qkk4ckIsWUFHQUMsVUFBVXpZLFFBQVFVO1FBQU8sSUFHekJnWSxLQUhVMVksVUFBVnlZO1FBQXlCLGFBR3pCQztvQkFIa0JoWTt1QkFHbEJnWTswQkFEK0IsZ0JBNXhCRWo2QyxJQTB4QmpDZzZDLFdBQWtCL1g7MEJBR2UsTUE3eEJBamlDLElBMHhCakNnNkMsVUFHQUMsTUFIa0JoWSxLQUdtRDtNQTN2QnpFLFNBc3RCSWlZLGVBQWUzWSxRQUFRb1ksUUFBUWpxQztZQUFoQnlxQyxrQkFBZ0J4cUM7UUFDakM7YUFEaUJ3cUMsY0FBUVIsUUFDQyx5QkFEREE7VUFFbkIsSUFDSm4xQyxFQURJLGdCQTF2QjZCeEUsSUF3dkJsQm02QztVQUVYLE9BQ0ozMUMsYUFRSyxVQVhVMjFDLFVBQWdCeHFDO1VBRTNCLElBRjJCQywwQkFHL0JwTDtVQUNBLHVCQUorQm9MO1dBTTdCOzJDQTl2QitCNVAsSUF3dkJGNFA7VUFFM0IsSUFRRixVQVZhdXFDLHNDQUFnQnhxQzttQkFXZDtNQWp1QnJCLFNBcXVCSTBxQyxjQUFjOVksUUFBUW9ZO1FBQ3hCLEdBRGdCcFksWUFBUW9ZLFFBQ0UseUJBREZBO1FBRWxCLDBCQXp3QjZCMzVDLElBdXdCbkJ1aEM7UUFFVjs2QkFDVSxzQkFIQUEsUUFBUW9ZOzs7V0FJZixJQUpPcFkscUJBQVFvWSxRQUtRLHlCQUxSQTtXQU1oQixJQUlKbjFDLEVBSkksZ0JBN3dCMkJ4RSxJQXV3Qm5CdWhDO1dBTVIsT0FJSi84QjtZQUNBLDBCQVhZKzhCLDBCQVVaLzhCO1dBSkk7WUFFYyx1QkFSTis4QixnQkFBUW9ZO1lBUUY7O3FCQUFkVyxXQUFVMTRDO1FBS1gsNkJBQVk7TUFsdkJyQixTQWd0Qkk0MkMsYUFBYWpYLFFBQVFvWTtRSm52RjVCLElJbXZGb0JRO1FBQ2Y7YUFEZUEsY0FBUVIsUUFDRyx5QkFESEE7VUFFcEIsMEJBcHZCZ0MzNUMsSUFrdkJwQm02QztZQUVhLGNBRmJBO1VBRXFELE9BRnJEQSxVQUU0RDtNQWx0QjdFLFNBODJCSUksa0JBQ0VDLFFBQVFqWixRQUFRZ1UsS0FBS2tGO1FBQ1YsSUFBVEMsT0FBUyxNQWw1Qm9CMTZDLElBaTVCL0J3NkMsUUFBUWpaLFVBQVJpWjtRQUNXO3dDQWw1Qm9CeDZDLElBaTVCL0J3NkMsUUFBcUJDLE9BQUxsRixLQUNkbUYsT0FJNEI7TUFwM0JwQyxTQW16QklDLGlCQUFpQkgsUUFBUWpaLFFBQVFxWixLQUFLcGhDLEtBQUtxaEMsTUFBTXRGO1lBQWhCdUYsWUFBS256QixZQUFLb3pCO1FBQzdDOzthQURtQ0Q7ZUFBS256Qjs7O2tCQUFLb3pCLG9CQUFNeEYsS0FJckIsb0JBSnFCQSxLQUlnQjs7Y0FKM0I1dEI7ZUFBS296Qjs7OzZCQUFNeEY7Ozs7O3dCQU1nQjt5QkFJckM7eUJBQ0E7eUJBSEE7eUJBSUE7eUJBTkE7OztlQU5ld0Y7eUJBQU14RixLQUdyQixvQkFIcUJBLEtBR2dCOzs2QkFIaEJBOzs7d0JBS2dCO3lCQUhyQzt5QkFBcUM7eUJBS3JDO3lCQUVBO3lCQUpBOztVSTMwRTFCO3lCSnMwRStDQTs7O3NCQWM1QixHQWwxQnJCaUUsa0JBazFCd0M7dUJBQ25CLEdBbjFCckJBLGtCQW0xQndDO3VCQUZuQixHQWoxQnJCQSxrQkFpMUJ3Qzs7OztnQkFJeEMsR0FyMUJBQSx1QkFvMEJzQzd4QjtnQkFtQmpDLHlCQW5CWTZ5QixRQUFRalosUUFBd0JnVTs7YUFBaEJ1RjtZQXFCakMsR0FyQjJDQztjQXFCM0MsR0F6MUJBdkIsdUJBbzBCMkN1QjtjQXdCdEMseUJBeEJZUCxRQUFRalo7WUE4QnpCLEdBbDJCQWlZLHVCQW8wQmlDc0I7WUFnQzVCLHlCQWhDWU4sUUFBUWpaLFFBQXdCZ1U7VUEwQmpELEdBMUIyQ3dGO1lBMEIzQyxHQTkxQkF2Qix1QkFvMEIyQ3VCO1lBNEJ0Qyx5QkE1QllQLFFBQVFqWixRQUF3QmdVO1VBaUMzQiw4QkFBWTtNQXAxQnRDLFNBK3ZCSXlGLHFCQUFxQnpaLFFBQVFvWSxRQUFRbjFDO1FKbHlGNUMsSUlreUY0QjIxQztRQUN2QjthQUR1QkEsY0FBUVI7V0FFN0Isa0NBbnlCaUMzNUMsSUFpeUJJd0UsRUFBUm0xQztVQUt6QiwwQkF0eUI2QjM1QyxJQWl5QlptNkM7VUFLakI7WUFFSixJQVBxQkEsdUJBQVFSO2FBT0MseUJBUERBO1lBUTFCLG1CQXp5QjhCMzVDLElBaXlCWm02Qyx1QkFBZ0IzMUMsRUFRbUIsT0FSbkMyMUM7WUFTUCw0QkExeUJtQm42QyxJQWl5QlptNkM7WUFTUDs7Ozs7b0JBZUk7a0RBeEJHQSxrQkFBUVI7cUJBd0JYLFVBQVZzQjtxQkF4QmFkOzs7O29CQWdDakI7NkJBaENpQkE7OztpQkFZakIsSUFaaUJBLHVCQUFRUjtrQkFZSyx5QkFaTEE7aUJBYWIsNEJBOXlCaUIzNUMsSUFpeUJabTZDO2lCQWFMO21CQUtJO21EQWxCQ0Esa0JBQVFSO29CQWtCVCxVQUFWd0I7b0JBbEJXaEI7OzttQkFlRDs7MENBZkNBLGtCQUFRUjtvQkFlVCxVQUFWMEI7b0JBZldsQjs7aUJBYUwsSUFPTCxVQXBCVUE7Ozs7Z0JBNEJIO2dEQTVCR0Esa0JBQVFSO2lCQTRCWCxVQUFWNkI7aUJBNUJhckI7OztlQW1DakIsMEJBbkNpQkE7WUFTUCxJQTRCVixVQXJDaUJBOztVQUtqQixJQWtDQyxVQXZDZ0JBO21CQXVDNEI7TUF0eUJyRCxTQWltQkl3QixpQkFDQXBhLFFBQVFvWTtRQUNWO1VBRW9CO2tDQUhsQnBZLFFBQVFvWTtXQUlBLHdCQXhvQnlCMzVDLElBdW9CM0I0N0M7O1VBQ0U7Ozs7VUl6bkVOO1lKMm5Fd0I7bUNBSHBCQSxVQUhFakM7YUFNa0I7O2FBQ04sdUJBRFprQyxVQU5BbEM7WUFRRCwwQkE1b0IwQjM1QyxJQTJvQnpCODdDLFdBQzJCO1lBRlQ7YUFHZCxRQTdvQnFCOTdDLElBb29CakN1aEMsaUJBT1F1YSxZQVBSdmE7d0JBT1F1YSxxQkFFQWg2QyxFQUhXbTRDOzs7VUFIRDs7Ozs7O1VBYUs7O1dBRFA5OUM7V0FBVm0rQztXQUNpQixjQURqQkEsU0FmRVg7V0FnQmU7d0JBRFB4OUMsZUFDSnEwQztRQUdXLGtCQW5CdkJqUCxRQUFRb1ksU0FtQmU7MkJBQVhsSixZQUN1QztNQXRuQnZELFNBbWtCSXVMLGlCQUNBemEsUUFBUW9ZO1FBQ1Y7O2dCQURFcFksWUFBUW9ZO2dDQUdrQixnQkF6bUJPMzVDLElBc21CakN1aEM7VUFHb0Q7VUFDbEM7a0NBSmxCQSxnQkFBUW9ZO1dBS0Esd0JBM21CeUIzNUMsSUEwbUIzQjQ3Qzs7VUFDRTs7OztVSTVsRU4sY0o0bUVPO1VBakJTO1dBR1Msc0JBSHJCQSxVQUpFakM7V0FPbUI7O1dBQ0wsdUJBRGRrQyxVQVBBbEM7V0FTSSx3QkEvbUJxQjM1QyxJQThtQnZCODdDO1dBQ0U7Ozs7WUFFTTtxQkFqbkJlOTdDLElBc21CakN1aEMsaUJBUVV1YSxZQVJWdmE7YUFXa0IsUUFBSnovQixFQUpLaWdDO2FBSUQsS0FIUitaO2FBUEVHO2FBQVYzQjs7Ozs7YUFhZ0M7b0NBTnhCd0IsVUFSRm5DO2NBYzBCOztjQUNSLHVCQURadUMsVUFkTnZDO2FBZ0JLLDBCQXRuQm9CMzVDLElBcW5CbkJtOEMsV0FDMkI7YUFGUDtjQUdoQixVQXZuQmVuOEMsSUFzbUJqQ3VoQyxpQkFlYzRhLFlBZmQ1YTtjQWlCa0IsUUFBSmx2QixJQVZLMHZCLE1BT01sRDtjQUdQLEtBRkpzZDtjQWRGRjtjQUFWM0I7OztzQkFrQmE7Ozt1REFJYjtjQXRCVTJCLGdDQUFWM0IsU0FERi9ZO1FBeUJxQixnQkF4Qm5CK1ksU0FETVgsU0F5QmE7c0JBeEJUc0MsaUJBd0JGekwsVUFDdUM7TUE5bEJyRCxTQTBpQkk0TCxVQUNBQyxZQUFZOWEsUUFBUW9ZO1FBQ3RCO2FBRGNwWSxZQUFRb1ksUUFFTTtVQUNwQiw0QkFobEIyQjM1QyxJQTZrQnJCdWhDO1VBR047WUFFTSxJQUFOK2EsSUFBTSxhQWxsQnFCdDhDLElBNmtCckJ1aEM7WUFLQSxHQUxRb1ksV0FLZDJDLElBQ21CO1lBRGI7YUFFSSxjQXBsQmlCdDhDLElBNmtCckJ1aEMsU0FLTithLE1BTE0vYTthQVFhLGNBSG5CK2EsWUFMYzNDO2FBUUs7YUFDRCxjQVRacFksUUFLTithO2FBSWtCOzZCQUFWRSxRQUZSRDthQUVrQixhQVR4QkYsZUFVTUk7YUFFMkMsWUFEM0NDLGFBSFFqTTs7VUFPWjs7OztZQUVxQjt5QkFqQlhsUCxRQUFRb1k7YUFpQkc7d0JBakJ2QjBDLGVBa0JJbmdEO1lBRTJDLGNBRDNDeWdELFdBRlFuTTtxQkFJbUM7TUFoa0JuRCxTQStESW9NLFlBaUNBcEMsUUFuQmlCalosUUFtQkRvWSxRQUFtQ3Y0QztRQTlCckQ7aUJBR0kwN0MsU0FBU3ZiLFFBQVFnWTtVQUVuQixTQUZtQkEsUUFFbkIsY0F4RkFDO1VBeUZFO1lBRWMseUJBNUdpQng1QyxJQXVHdEJ1aEM7WUFHVCxrQ0ExRytCdmhDLElBdUd0QnVoQztVQUtrQjtrQkFDaEI7WUFFSTRZO1FBQ2pCO2FBRGlCQSxjQW1CRFIsUUFsQlUseUJBa0JWQTtVQWpCSiwwQkFqSHFCMzVDLElBK0doQm02QyxXQUVMOzs7O2NBS0gsU0FQUUEsVUFWTVU7Y0FpQmQsY0FQUVY7OztjQU1SLFNBTlFBLFVBVGYzZ0M7Y0FlTyxjQU5RMmdDOzs7Y0FLUixTQUxRQSxVQVZmUztjQWVPLGNBTFFUOzs7Y0FJUixTQUpRQSxVQVhNMEM7Y0FlZCxjQUpRMUM7OztjQUdSLFNBSFFBLFVBWGZsOUI7Y0FjTyxjQUhRazlCOzs7VUFFTDtXQU9WLEtBbkJxQlU7V0FtQnJCLEtBbEJBcmhDO1dBa0JBLEtBbkJBb2hDO1dBbUJBLEtBcEJxQmlDO1dBb0JyQixLQXBCQTUvQjtVQStCSixHQXBCbUJrOUIsY0FtQkRSLFFBQ1EseUJBRFJBO1VBakJKO1dBa0I0Qzs7O2dCQWxIeERIOztrQkF5SE8sa0JBUlBnQixRQW5CaUJMOzs7V0E0QmIsd0JBM0k2Qm42QyxJQStHaEJtNkM7VUE0QmI7O2NBRWlCO3NDQTlCSkEsVUFtQkRSO2VBV0s7Ozt1QkFYckJhO3VCQVdJdUM7dUJBWFlwRDs7Ozs7dUJBQW1DdjRDOzBCQUVqRHdpQyxNQVNXN0I7OztZQUliO3FCQWZBeVk7cUJBbkJpQkw7cUJBbUJEUjs7Ozs7cUJBQW1DdjRDO3dCQUVqRHdpQztVQWdCRixPQWhCRUE7O2FBa0JBLE9BcklGNFY7Y0FzSUksdUJBeENhVzthQXdDcUM7c0JBckJ0REssUUFuQmlCTCxVQW1CRFIsNEJBQW1DdjRDOzthQStCakQ7c0JBL0JGbzVDLFFBbkJpQkwsVUFtQkRSLDRCQUFtQ3Y0Qzs7YUE0QmpEO3NCQTVCRm81QyxRQW5CaUJMLFVBbUJEUiw0QkFBbUN2NEMsV0FObkM7TUExRnBCLFNBb0lJNDdDO1FBaUJBeEMsUUFkUWpaLFFBY1FvWSxRQUFRa0QsTUFBTWpDLEtBQUtwaEMsS0FBS3FoQyxNQUFNejVDLElBQUl0QztRQWJwRCxHQURVeWlDLFlBY1FvWSxRQWJRLHlCQWFSQTtRQVpaLElBSUpwRSxLQUpJLGdCQTNLNkJ2MUMsSUF5S3pCdWhDO1FBRUosVUFJSmdVO1VBRkEsSUFVUTRFLFVBZEE1WTtVQWVWLEdBRFU0WSxjQUFRUixRQUNRLHlCQURSQTtVQVZoQjtXQVd3RDtxQkFDeENrRCxNQUFNdGI7Y0FDRjtvQ0FERUEsUUFGTm9ZO2VBR0k7Ozt1QkFIcEJhO3VCQUdJdUM7dUJBSFlwRDt1QkFFQWtEO3VCQUZjakM7dUJBQUtwaEM7dUJBQUtxaEM7dUJBQU16NUM7dUJBQUl0QzswQkFHckNFLE1BRWE7V0FDdEIsdUJBN0w2QmdCLElBdUx6Qm02QztVQU1KLFNBRUpnRDtnQ0FEYyxxQkFQVU4sTUFBaEIxQzs7b0JBUVJnRDs7O2VBV0E7d0JBbkJBM0M7d0JBQVFMO3dCQUFRUjt3QkFBUWtEO3dCQUFNakM7d0JBQUtwaEM7d0JBQUtxaEM7d0JBQU16NUM7d0JBQUl0Qzs7OztlQVF6QixHQTlLekIwNkM7aUJBdUxBO3VCQWpCUVc7a0JBaUJSLFFBakJ3QjBDLGlCQVF4Qk07aUJBY0EscUJBdEJ3QkM7OztVQXNCeEIsT0E1TEE1RDttQkFnTUU7cUJBMUJGZ0I7cUJBQVFMO3FCQUFRUjtxQkFBUWtEO3FCQUFNakM7cUJBQUtwaEM7cUJBQUtxaEM7cUJBQU16NUM7cUJBQUl0Qzs7bUJBNkJoRCx1QkE3Qk1xN0M7UUFQUjtpQkFPQUs7aUJBZFFqWjtpQkFjUW9ZO2lCQUFjaUI7aUJBQUtwaEM7aUJBQUtxaEM7aUJBQU16NUM7aUJBQUl0Qzs7O2lCQVJsRHkyQyxLQUV1QjtNQS9JM0IsU0FxTEkySDtRQUdBMUMsUUFBUWpaLFFBQVFvWSxRQUFRa0QsTUFBTWpDLEtBQUtwaEMsS0FBS3FoQyxNQUFNejVDLElBb0I5Q3RDLElBcEJzREU7UUFDeEQsR0FEVXVpQyxZQUFRb1ksUUFDUSx5QkFEUkE7UUFDd0MsU0FDdEQyRCxXQUE4QkM7VUFFakI7bUJBSmYvQzttQkFBUWpaO21CQUFRb1k7bUJBQWNpQjttQkFBS3BoQzttQkFBS3FoQzttQkFBTXo1QzttQkFvQjlDdEM7bUJBcEJzREU7bUJBRXRCdStDO21CQUVqQixnQkE5TmtCdjlDLElBME56QnVoQyxTQUlvQjtRQUg0QixVQW1CeER6aUM7b0JBcEJzREUsNEJBYy9CO2FBZEM2OUM7c0JBQThCNzlDLGtCQWtCM0I7Z0JBRkg0QyxFQWhCOEI1QzttQkFFcERzK0MsZ0JBY3NCMTdDO29CQWhCOEI1QyxrQkFpQjFCO2NBRkgwVCxJQWY2QjFUO2lCQUVwRHMrQyxnQkFhdUI1cUM7UUFLbEIsa0JBQVA1VCxJQUFxQjtNQTVNekIsU0ErTUl1K0M7UUF3b0JtQjdDLFFBQVFqWixRQTlOSm9ZLFFBdmFDaUIsS0FBS3BoQyxLQUFLcWhDLE1BQU16NUMsSUFBSXRDLElBQUlFLEtBQUt1K0MsUUFxb0JGaEk7UUFub0JyRDs7Ozs7OztpQkFLSXVJLGdCQUFpQix3QkFQS2xELElBT21CO1FBTDdDLFNBTUltRCxnQkFBZ0Isd0JBUld2a0MsSUFRWTtRQU4zQyxTQU9Jd2tDLGlCQUFpQix5QkFUZW5ELEtBU1U7UUFQOUMsU0FRSW9ELGVBQWlCLHVCQVZxQjc4QyxHQVVFO1FBUjVDLFNBU0k4OEMsZUFBaUIsdUJBWHlCcC9DLEdBV0Y7UUFUNUMsU0FVSXEvQyxnQkFBaUIsd0JBWjZCbi9DLElBWUw7UUFWN0MsU0FXSW8vQyxtQkFBaUIsdUJBYmtDYixPQWFQO1FBWGhELFNBYUljO1VBWUssbUJBQVk7a0RBQ08sT0FBckJ2L0M7O1dBQ3FCOztxQkFEckJBOztnQkFHQSxJQURvQjhDLEVBRnBCOUM7Z0JBR0EsT0FsUUwwNkM7OEJBaVF5QjUzQzt5QkFFZixrQkFxbUJTNDRDLFFBQVFqWjtjQWptQkssT0FSM0J6aUM7O3FCQS9QTDA2Qzs7dUJBc1FVLGtCQWttQlNnQixRQUFRalo7cUJBem1CdEJ6aUMsSUFTOEI7UUFuQ3JDLFNBc0NJdy9DLFdBQVcvSSxLQUFpQnoyQztVQUM5QixVQUQ4QkE7V0FFZCxPQUZjQTs7WUFDOUIsU0FEOEJBOztnQkFNNUIsSUFEb0JpakMsTUFMUWpqQztnQkFNNUIsT0FqUkYwNkM7OEJBZ1JzQnpYO3lCQUVmLGtCQXNsQll5WSxRQUFRalosUUE3bEJkZ1U7Y0FHd0IsT0FIUHoyQzs7cUJBM1E5QjA2Qzs7dUJBcVJPLGtCQW1sQllnQixRQUFRalosUUE3bEJkZ1U7cUJBQWlCejJDLElBVW1CO1FBaERuRCxTQXNESXkvQyxXQUFXLzVDLEVBQXFCMUY7VUFBd0IsVUFBeEJBO1dBQ2xCOztZQUQwQyxTQUF4QkE7OztnQkFPaEMsSUFEbUJpakMsTUFOYWpqQztnQkFPaEMsT0FsU0YwNkM7NEJBaVNxQnpYO3lCQUVkLGtCQXFrQll5WSxRQUFRalosUUE3a0JkLzhCO3NCQUVtQixJQUFWMHdDLFFBRllwMkMsT0FFRixVQUFWbzJDOztnQkFFcEIsSUFEb0JzSixRQUhZMS9DO2dCQUloQyxPQS9SRjA2Qzs0QkE4UnNCZ0Y7eUJBRWYsa0JBd2tCWWhFLFFBQVFqWixRQTdrQmQvOEI7WUFTTSx5QkFva0JBZzJDLFFBQVFqWixRQTdrQmQvOEIsVUFTK0M7UUEvRDlELFNBaUVJaTZDLFlBQVlqNkMsR0FBaUIsa0JBQWpCQSxFQUFpQixXQUFZO1FBakU3QyxTQWtFSWs2QyxnQkFBZ0JsNkMsR0FBaUIsa0JBQWpCQSxFQUFpQixlQUFnQjs7UUFsRXJELFVBbW9CcUQrd0M7Ozs7O1lBdmE1QjsyQkF1YUloVSxRQTlOSm9ZO2FBek1BO2FBL0lyQmdGLGtCQStJVTdOOzs7WUFnQkU7MENBdVphdlAsUUE5TkpvWTthQXhMQSxjQURuQnNCLGdCQXlMbUJ0QjthQXhMQTthQUNELGNBcVpLcFksUUF2WnZCMFo7YUFFa0I7YUFDTix1QkFESnVCO1lBRVQ7YUFDbUM7MkNBRmxDN1g7MEJBRUVpYSxVQUpNdk47OzZCQU9hLGdCQUxyQjFNLFVBRlEwTTtZQURFLElBL0pac047O2tDQUVGLE1Bb2pCMkJwZCxRQTlOSm9ZOztZQWhVQTs0QkE4aEJJcFksUUE5TkpvWTthQWhVQTthQUNwQix5QkFEUzlIO2FBeEJWOE07OztZQTJEcUI7NEJBMmZJcGQsUUE5TkpvWTthQTdSQTs7WUFFcEI7YUFDRCxrQkFGRWtGLHVCQUVFQyxVQUhNdE07OzZCQUNScU0sVUFEUXJNO1lBQVcsSUEzRHJCbU07OztZQXNDUTs4QkFnaEJ5Q3BKLEtBaGhCekI7YUFDSCxlQStnQkloVSxRQTlOSm9ZO2FBalRBO1lBQ3BCO2FBQ2lDOzswQkFBOUJvRixVQUZNcE07O2FBTVI7NENBUEE1eUMsTUFDUTR5QztjQU1SOzt5QkFEbUJ4eUMsTUFBTTJ5QztZQU5uQixJQXRDUjZMOzs7WUF5VkosR0E2TjZCcGQsWUE5TkpvWSxRQUNDLHlCQUREQTtZQUdWOzsrQkFDRm4xQyxHQUNYLHVCQUZFMUQsU0FDUzBELEVBQ2U7YUFGYjt1QkFJRDZYLElBQUU3WDtnQkFDZCxNQURjQSxJQUFGNlg7c0JBQ1pqZixFQURZaWY7a0JBRVY7b0NBTkF2YixTQU15QixZQUQzQjFEO29CQUNFLFNBREZBO3VCQURjb0gsTUFDZHBIOztnQkFIQSxRQUtJO2FBUFM7dUJBVVNta0M7Z0JBQ3RCLHlDQXpxQmlDdmhDLElBd3FCWHVoQyxRQUcwQjthQWJuQzsrQkF1QllBLFFBQVFvWTtnQkp0ckZ4QyxJSXNyRmdDUTtnQkFDekI7cUJBRHlCQSxjQUFRUixRQUNQLHlCQURPQTtrQkFFM0IsSUFNSm4xQyxFQU5JLGdCQXZyQjJCeEUsSUFxckJSbTZDO2tCQUVuQixVQU1KMzFDO29CQUZBO2tDQU51QjIxQzs7NEJBUXZCMzFDLEVBSkEsT0FKdUIyMUM7a0JBRW5CLFNBRm1CQTtrQkFTdkI7OzJCQUdBZ0YsMkNBWitCeEYsUUFRL0JuMUM7OzJCQUlBMjZDLG9DQVorQnhGLFFBUS9CbjFDLElBQ2lEO2FBaEN0QzsrQkFtQ2UrOEIsUUFvQlNvWSxRQXBCT24xQztvQkFBaEIyMUMsa0JBQWdCOTlCO2dCQUM1QztxQkFENEI4OUIsY0FvQlNSLFFBbkJYLHlCQW1CV0E7a0JBbEIvQix3QkFuc0IyQjM1QyxJQWlzQkxtNkM7a0JBRXRCLFNBRnNDNzlCOzs7O29DQUkxQyxTQUowQ0QsS0FJMUMsT0FKMEI4OUI7OzZCQUFnQjc5Qjs7OztzQkFPMUMsSUFhMkI0K0IsVUFwQkRmO3NCQXFCNUIsR0FENkJlLGNBQVF2QixRQUNYLHlCQURXQTtzQkFibkMsSUE0QkFwOUIsSUFiSSxnQkF2dEIyQnZjLElBcXRCSms3QztzQkFFdkIsVUFhSjMrQjt3QkFQQSxJQVIyQjIrQix1QkFBUXZCO3lCQVFMLHlCQVJLQTt3QkFTdkIsSUFDUm45QixJQURRLGdCQTl0Qm1CeGMsSUFxdEJKazdDO2tDQVV2QjErQjt5QkFHSywyQkFia0IwK0I7d0JBV3ZCLFVBL0JzQzcrQixJQThCdENHO3dCQURRLFNBVGUwK0I7d0JBV3ZCOztpQ0EzQ0pnRSxzQ0FnQ21DdkY7O2lDQWhDbkN1RiwrQkFnQ21DdkY7Z0NBZW5DcDlCO3dCQVhBLFNBeEIwQ0YsS0F5QjFDLG9CQUwyQjYrQjtzQkFnQjNCLFVBcEMwQzcrQixJQW1DMUNFO3NCQTVCQSxTQWEyQjIrQjtzQkFnQjNCOzsrQkFoREFnRSxzQ0FnQ21DdkY7OytCQWhDbkN1RiwrQkFnQ21DdkY7a0JBWlosc0JBUm1CdDlCO29CQVMxQyxTQVQwQ0M7b0JBUzFDLFNBVDBCNjlCO29CQVMxQjs7NkJBckJBK0Usc0NBZ0NtQ3ZGOzs2QkFoQ25DdUYsK0JBZ0NtQ3ZGO2tCQVJuQyxVQVowQ3Q5QixJQVkxQixvQkFaVTg5QjtrQkFnQjFCLFNBaEIwQzk5QjtrQkFFdEMsSUFjSixVQWhCMEI4OUIsc0NBQWdCOTlCOzJCQWlCUTthQXBEdkM7dUJBbUNla2xCLFFBb0JTb1ksUUFwQk9uMUM7Z0JKbHNGbkQ7eUJJa3NGUzI2Qyw4QkFBMEI1ZCxRQW9CU29ZLFFBcEJPbjFDO1lBbkMvQixHQTJOYys4QixZQTlOSm9ZLFFBOEVHLHlCQTlFSEE7WUFHVixhQTRFUCxnQkExdUIyQjM1QyxJQXkzQk51aEM7WUEvSXJCO2FBQ0ssY0E4SWdCQSxnQkFqSmhCOGQsVUFBVGpGOztpQkFBU2lGLFVBQVRqRixVQWlKeUI3WTtZQXpNM0IsR0F3REU2WSxjQTdFcUJULFFBcUJHLHlCQXJCSEE7WUFHVjthQW1CTCxrQkFqckJ5QjM1QyxJQXd1Qi9CbzZDO2FBdkRNLG1DQXVETkEsa0JBN0VxQlQsUUFzQm5CbjFDO2FBNkRTLDJCQWhGWDFEO2FBZ0ZXLFdBTkZ1K0MsUUFPYyxhQUR2QjFkO2FBalFxQixlQWdRckIyWSxTQWxGcUJYO2FBOUtBO1lBQ3BCO2FBQ29DOzRDQUh6QjJGOzBCQUdSQyxVQUZNeEw7OzZCQUtjLGdCQU5adUwsV0FDRnZMO1lBaUxDLElBM1ZYNEs7OztZQXFJcUI7NEJBaWJJcGQsUUE5TkpvWTthQW5OQTthQXJJckJnRixrQkFxSVV4Szs7O1lBaklaOzt1QkFBZ0IzRDtnQkFDWCwyQkFEV0EsMkJBR2M7YUFPUCxlQXdpQklqUCxRQTlOSm9ZO2FBMVVBO2FBQ1g7OztlQUxQO3lDQUlPOEY7OztlQUtQOztpQkFyVUxqRzttQkF1VXlDLFlBUDdCaUc7bUJBaFNkO3FCQXcwQjZCbGU7OztzQkF0aUJmLFlBRkFrZTtZQVZaLElBSkVkOzs7WUEySXFCOzRCQTJhSXBkLFFBOU5Kb1k7YUE3TUE7YUFDcEIseUJBRFMrRjthQTNJVmY7OztZQTRCUTs4QkEwaEJ5Q3BKLEtBMWhCekI7YUFDSCxlQXloQkloVSxRQTlOSm9ZO2FBM1RBO1lBQ3BCO2FBQzRCOzswQkFBekJrRyxXQUZNRDs7YUFNUjs0Q0FQQUQsTUFDUUM7Y0FNUjs7eUJBRG1CRyxPQUFNRDtZQU5uQixJQTVCUm5COzs7WUF3SXFCOzRCQThhSXBkLFFBOU5Kb1k7YUFoTkE7YUF4SXJCZ0Ysa0JBd0lVcUI7OztZQWFFOzRDQWlhYXplLFFBOU5Kb1k7YUFsTUQsZUFnYUtwWSxRQWphdkI0WjthQUNrQjthQUNDLGVBRm5CQSxrQkFtTW1CeEI7YUFqTUE7YUFDUCx5QkFGSnNHO1lBR1Q7YUFDaUM7NENBRmhDcmI7MEJBRUV1YixXQUhNRDs7NkJBTVcsaUJBTG5CdGIsWUFEUXNiO1lBRkUsSUFySlp2Qjs7OztZQTJIUTs4QkEyYnlDcEosS0EzYnpCO2FBQ0gsZUEwYkloVSxRQTlOSm9ZO2FBNU5BO1lBQ3BCO2FBQzBCOzswQkFBdkJ5RyxVQUZNM087O2FBTVI7NENBUEFseUMsTUFDUWt5QztjQU1SOzt5QkFEbUIveEMsTUFBTWl5QztZQU5uQixJQTNIUmdOOzs7O1lBa0pxQjsyQkFvYUlwZCxRQTlOSm9ZO2FBdE1BO2FBbEpyQmdGLGtCQXNqQmlEcEosS0FwYXZDdEU7Ozs7OztZQWhGUyxHQW9mTTFQLFlBOU5Kb1k7Y0F0UmtDO3NDQXJZeEIzNUMsSUF5M0JOdWhDO2VBOUNSLEtBQVA0Yjs7Y0FBTzs7Ozs7Ozs7Ozs7O2NBcmNJOzhCQW1mSTViLFFBOU5Kb1k7ZUFyUkE7O2NBMGNBLFVBeUM0QnBFOzs7OEJBbGYvQ3QwQzs7Ozt5QkFrZitDczBDLFVBbGYvQ3QwQzs0QkEyY3dCO2NBMWN6QjtlQUNELGtCQUZFQSxxQkFFRW8vQyxVQUhNak87OytCQUNSbnhDLFFBRFFteEM7Y0FBVyxJQW5FckJ1TTs7Ozs7Ozs7O2NBaUxGLGtDQXBmaUMzK0MsSUF5M0JkdzZDLFFBQWdDakY7Ozs7Ozs7O1lBcmdCakQ7O2FBRHlEO2FBQS9DOytCQXNnQk9pRixRQUFRalosUUF0Z0JrQixzQkFzZ0JNZ1U7YUFwZ0I1QixlQW9nQkloVSxRQTlOSm9ZO2FBdFNBO1lBQ3BCO2FBQ2lDOzJCQUpoQ2g2QyxRQUlnQzswQkFBOUIyZ0QsVUFGTXJOOzthQU04Qjs7Y0FBdEMsOEJBQXFCLG9CQU5iQTtjQU1SOzs7eUJBUkF0ekMsUUFPbUJVLE1BQU0wd0MsT0FBTzRDO1lBTmxDLElBakRBZ0w7Ozs7Ozs7Ozs7WUFpSDhCOzthQUFkO2FBQWQ7YUFzY047Y0FEcUM4QjtnQkFBVUY7a0JBeDJCN0MvRzs7b0JBZzNCSyxrQkFSY2dCLFFBQVFqWjs7Z0JBQWtCZ2Y7O1lBUy9DLFNBVHFEaEw7Ozs7Ozs7Ozs7b0JBU2pEbUw7O3NCQVRpRG5MOzs7Ozs7O2lDQVNqRG1MOzs7OztpQkFUc0NGO3lCQUFXakwsU0FTakRtTDs7eUJBVGlEbkwsU0FTakRtTDswQkFVRztZQXhkMkI7YUF5ZGxDLFNBbkJJbkgsS0FRQW1IO2FBN2NxQixlQW9jSW5mLFFBOU5Kb1k7YUF0T0E7WUFDcEI7Y0F6SHVCOztlQUdGLGlDQXlqQkxhLFFBQVFqWjs7ZUExakJILDBCQUFSa0I7Y0FGVTtlQTBISzsyQkFBekJrZSxVQUZNNU87O2FBTTBCOztjQUFsQyw4QkFBcUIsZ0JBTmJBO2NBTVI7Ozt5QkFUQWp5QyxNQVFtQkQsTUFBTUQsT0FBT3F5QztZQU5KLElBakg5QjBNOzs7UUlwekRBOztvQkowMkVpRHBKOzs7Ozs7O2dCQXplaEM7c0NBaFpjdjFDLElBeTNCTnVoQztpQkF6ZXZCO2lCQURtRDtpQkFBckQ7O29CQTBlaUJpWixRQUFRalosZ0JBMWVjO2lCQUVsQixjQXdlSUEsZ0JBOU5Kb1k7aUJBMVFBO2dCQUNwQjtpQkFDbUM7NkJBTGxDejZDLE1BS2tDOzhCQUFoQzBoRCxRQUZNcFE7O2lCQU04Qjs7a0JBQXRDLDZCQUFxQixvQkFOYkE7a0JBTVI7Ozs2QkFUQXR4QyxNQVFtQkgsTUFBTUksT0FBT3N4QztnQkFOakI7Ozs7Z0JBWWM7c0NBNVpBendDLElBeTNCTnVoQztpQkE3ZFQ7aUJBQWQ7aUJBREY7O29CQThkaUJpWixRQUFRalosZ0JBOWRjO2lCQUVsQixjQTRkSUEsZ0JBOU5Kb1k7aUJBOVBBO2dCQUNwQjtpQkFDdUM7K0JBTHRDdDZDLFFBS3NDOzhCQUFwQ3doRCxVQUZNblE7O2lCQU04Qjs7a0JBQXRDLDZCQUFxQixvQkFOYkE7a0JBTVI7Ozs2QkFUQXJ4QyxRQVFtQkosTUFBTUssT0FBT3F4QztnQkFOSDsrQkF6Ri9CZ087O3FCQXNqQmlEcEo7YUFqZGhDO21DQXhhY3YxQyxJQXkzQk51aEM7Y0FqZHZCO2NBRG1EO2NBQXJEOztpQkFrZGlCaVosUUFBUWpaLGdCQWxkYztjQUVsQixjQWdkSUEsZ0JBOU5Kb1k7Y0FsUEE7YUFDcEI7Y0FDbUM7NEJBTGxDbjZDLFFBS2tDOzJCQUFoQ3NoRCxVQUZNbFE7O2NBTThCOztlQUF0Qyw2QkFBcUIsb0JBTmJBO2VBTVI7OzswQkFUQXB4QyxRQVFtQkosTUFBTUssT0FBT294QzthQU5qQixJQXJHakI4Tjs7Ozs7O2FBc0xGLGtDQXpmaUMzK0MsSUF5M0JOdWhDLGdCQUF3QmdVO1FBOVhHLE9BMWV0RGlFO1VBZ2YwQixhQTNReEJnRSxhQTJRd0IsWUE3UUY1QztVQStReEIsR0EvUXdCRSxPQStReEIsa0JBc1htQk4sUUFBUWpaLFFBQXdCZ1U7VUF4WHpCLElBRWtCLFNBN1Fma0ksYUE2UWUsWUEvUWZqa0M7VUFpUjdCLEdBalI2Qm1PLE9BaVI3QixrQkFvWG1CNnlCLFFBQVFqWixRQUF3QmdVO1VBeFh6QixJQUlrQixTQTlRMUNtSSxjQThRMEMsYUFqUlY3QztVQW1SbEMsR0FuUmtDRSxRQW1SbEMsa0JBa1htQlAsUUFBUWpaLFFBQXdCZ1U7VUF4WHpCLElBTWtCLFNBL1ExQ3FJLFlBK1EwQyxVQUN6QixpQkFwUnlCOStDO1VBb1JnQixRQUM1RCxrQkFnWG1CMDdDLFFBQVFqWixRQUF3QmdVO1VBeFh6QjtXQVF3QixTQWpSckJzSTtXQWlScUIsVUFDL0IsaUJBdFI2QjcrQztVQXNSbUI7WUFDbkUsU0F2UndDb0MsT0Fxb0JXbTBDO1lBOVduRCxrQkE4V21CaUYsUUFBUWpaO1VBeFhELElBN1FGd2YsT0FBZ0IzL0MsSUFBaEJ3NUMsS0FBZ0J4NUM7VUF5UnRCLEdBelJNMi9DLE9BeVJOLGtCQTRXQ3ZHLFFBQVFqWjtRQTVXa0MsYUF0UmhDb2MsWUFzUmdDLFdBelJyQnY4QztRQStSeEMsR0EvUndDNC9DOztVQStSeEMsU0FzV21Eekw7Ozs7O1VBcFdsQixpQkFwZ0JqQ2lFO3VCQXNnQkksa0JBa1dlZ0IsUUFBUWpaLFFBQXdCZ1U7UUFsV0gsT0FwTjlDb0osVUFzTk07TUF2ZlosU0FtQ1E1QyxNQUtKL0IsVUFtZFFMO1FKOWhGZixJSTJrRWlCcFksUUFBVnlZO1FBQ0Y7YUFEWXpZLFlBbWRGb1ksUUFsZGdCLG1CQUR4QkssVUFBVXpZO1VBRUosMEJBNUUyQnZoQyxJQTBFdkJ1aEM7VUFFSjtZQVlhLElBR1gyWixVQWpCRTNaO1lBa0JaLEdBRFUyWixjQWtjQXZCLFFBamNnQix5QkFpY2hCQTtZQXJjVzthQUtmLHdCQTdGNkIzNUMsSUEyRnpCazdDO2FBRUo7O2dCQUNLLFlBcEJDM1osUUFpQkYyWixrQkFrY0F2QjtnQkE5YkQsWUFyQkdwWSxRQWlCRjJaLFVBa2NBdkI7YUEvY01uSjttQkF5c0JkdUosWUE3c0JBQyxVQUFVelksUUFJSWlQOztZQUdaLElBNGNGMkosVUFuZFU1WTtZQW9kWixHQURFNFksY0FBUVI7OztjQUdGLHNCQWhpQjJCMzVDLElBNmhCakNtNkM7Y0FHTSxTQXVDSjMxQzs7Ozs7Ozs7aUNBaENBLFlBVkYyMUMsa0JBQVFSOzs7cUJBWWlCO29DQVp6QlEsa0JBQVFSO3NCQVlpQjt1Q0FBWGhKOzt5QkE4Qlpuc0M7OztnQ0FyQ0EsWUFMRjIxQyxrQkFBUVI7OztvQkFPaUI7bUNBUHpCUSxrQkFBUVI7cUJBT2lCO3NDQUFYL0k7Ozs7eUJBbUNacHNDO2dCQWhCdUI7K0JBMUJ6QjIxQyxrQkFBUVI7aUJBMEJpQjtrQ0FBWDlJOzt5QkFnQlpyc0M7OztvQkF4QnVCO21DQWxCekIyMUMsa0JBQVFSO3FCQWtCaUI7eUNBQVg3STs7OztvQkFrQnNCO3VCQXBDcENxSjs7c0JBQVFSOzs7O3NCQW9DNEIsZ0JBamtCSDM1QyxJQTZoQmpDbTZDO3NCQXFDeUI7cUNBckN6QkEsa0JBQVFSO3VCQXFDaUI7d0NBQVgxSTs7O3FCQUdXO29DQXhDekJrSixVQUFRUjtzQkF3Q2lCO3dDQUFYdEk7OztvQkF6Qlc7bUNBZnpCOEksa0JBQVFSO3FCQWVpQjt5Q0FBWGxJOzs7b0JBY1c7b0NBN0J6QjBJLGtCQUFRUjtxQkE2QmlCO3NDQUFYaEk7OztnQ0FSWixpQkFyQkZ3SSxrQkFBUVI7OztnQ0FnQ04saUJBaENGUSxrQkFBUVI7OztvQkF1QmlCO29DQXZCekJRLGtCQUFRUjtxQkF1QmlCO3NDQUFYOUg7OztvQkFXVztvQ0FsQ3pCc0ksa0JBQVFSO3FCQWtDaUI7c0NBQVg1SDs7Ozs7Y0loakVaO2VKeWpFdUI7OEJBM0N6Qm9JLGtCQUFRUjtnQkEyQ2lCO2tDQUR2Qm4xQyxHQUNZa3NDO1lBdmZaLElBQVlEO21CQXNzQmRzSixZQTdzQkFDLFVBQVV6WSxRQU9Ja1A7VUFMUixJQVFKLFVBVlFsUDttQkFKOEM7TUFwQzVELHFDQWxDcUN2aEMsS0F3NUJQO2FBTzVCaWhELHVCQUF1QmpoRCxJQUFJRTtNQUNYLDhCQURPRixLQUNQOztRQUNOLHdCQURBaWlDLElBRGlCL2hDLE9BQUpGOzs7O1VBTWpCLHlCQU5xQkU7VUFNckIseUNBTmlCRjttQkFNTTthQUk3QmtoRCx3QkFBd0JsaEQ7TUFDUjtPQUQyQnVrQztPQUFOdEM7T0FDckIsMEJBRFFqaUM7T0FDUjs7UUFDTix3QkFEQWdsQyxNQUNnQixhQUZXL0MsTUFBYmppQzs7OztTQUl4Qix5Q0FKd0JBLElBQW1CdWtDOzs7OztPQTUzRjNDM0M7T0FUQUY7T0FiQUw7T0FHQUM7T0FNQUc7T0F3Q0FPO09BazZDSXNVO09BK1FBa0I7T0ErR0FPO09Bb0JBSTtPQXFCQUM7T0F4NkJBckQ7T0F1aENKc0U7T0ErNUJBNEg7T0FVQUM7T0F6b0ZBMWQ7T0FnTEFjO09BMmdDQTZSO09BejFCQXJSO09BNnlDQXdUO09BL3hDSTNTO09BdUlKQztPQStmQW9QOzthcUNwd0NBbU0sU0FBUzlvQixFQUFFbnJCO1VBQVcrMEI7YXJDdzlDbEJxVTt3QnFDdjlDVzVtQyxLQUFPLFdBRFh4QyxFQUNJd0MsS0FBTyxrQkFEYjJvQixFQUFFbnJCLEVBQ2dDOztlQURyQiswQjthQUV0Qm1mLFNBQVMvb0IsRUFBRWoxQjtVQUFXNitCO2FyQ3M5Q2xCcVU7d0JxQ3I5Q1c1bUMsS0FBTyxXQURYdE0sRUFDSXNNLEtBQU8sa0JBRGIyb0IsRUFBRWoxQixFQUNnQzs7ZUFEckI2K0I7YUFFdEJvZixVQUFVaHBCLEVBQUV0ekI7TXpDdkJqQixJeUN1QjZCazlCLG9CckNtdURwQnVWLGFxQ251RE1uZixFQUFFdHpCLEdBQVlrOUI7YUFJeEJxZixRQUFRdjhDLEdBQUdrOUIsS0FBTSwrQnpDM0J0QixVeUMyQmFsOUIsR0FBR2s5QixJQUE0QjthQUN2Q3NmLFFBQVFuK0MsRUFBRTYrQixLQUFNLCtCekM1QnJCLFV5QzRCYTcrQixFQUFFNitCLElBQTJCO2FBQ3JDdWYsU0FBU3o4QyxHQUFHazlCO01BQU0sZ0N6QzdCdkIsVXlDNkJjbDlCLEdBQUdrOUIsSUFBNkI7YUFDekN3ZixTQUFTcitDLEVBQUU2K0IsS0FBTSxnQ3pDOUJ0QixVeUM4QmM3K0IsRUFBRTYrQixJQUE0QjthQUN2Q3lmLE9BQU96ZixLQUFNLGV6QkZiLzlCLE95QkVPKzlCLElBQXdCO2FBQy9CMGYsUUFBUTFmLEtBQU0sZXpCRmQ5OUIsT3lCRVE4OUIsSUFBd0I7YUFFaEMyZixTQUFTdnBCO016Q2xDZCxJeUNrQ3lCNEo7ZUFDbEIvQixJQUFHeHdCO1FBQ0ssSUFBTm5KLElBQU07UUFDVixXQURJQSxJQURDbUo7UUFHSCxrQkFKTzJvQixFQUlQLFNBRkU5eEIsS0FFbUI7YXJDcThDbkIrdkMsWXFDeDhDRnBXLE1BRGtCK0I7YUFPcEI0ZixRQUFRNWYsS0FBTSx5QkFBY25nQyxHQUFLLE9BQUxBLENBQU0sRUFBMUJtZ0MsSUFBK0I7Ozs7T0FkdkNxZjtPQUlBSTtPQUNBQztPQVNBRTtPQWJBTjtPQUNBQztPQUNBQztPQVhBTjtPQUlBRTtPQVdBTztPQWJBUjtPQUVBQztPQVdBTzs7Ozs7O2FDNkJJRSxPQUFPNy9DLEVBQUV5QjtNMUMvRGxCLEkwQytEa0IyVztNQUNmO1dBRGVBOzJCQUdSMG5DLFlBQUpDO1VBQXFCLGNBQXJCQSxHQUhVLy9DLEdBR3FCLE9BQTNCOC9DO1VBQ0ssUUFKRzFuQzs7UUFFUCxnQkFFYzthQUdwQjRuQyxRQUFNbmdEO01BQ0E7aUJBREFBO09BQ0EsMEJBREFBO09BR1UsV0FIVkEsRUFDSjFFLFVBQ0ErSCxPQURBL0g7TUFFSixnQkFIUTBFLElBQ0oxRSxRQUU0QzthQUc5QzhrRCxhQUFhMWpDLE9BQU9MLElBQUlRLE9BQU9qYjtNQUNqQyxHQURpQ0E7UUFHa0IsSUFBOUMwSyxFQUg0QjFLLEtBRy9Ca2xCLEVBSCtCbGxCLEtBR2tCLFNBSHBDOGEsT0FHYm9LO1FBQVE7c0NBQXFCM21CLEVBQUVDLEdBQVMsV0FBWEQsRUFBVyxJQUhwQmtjLElBR1dqYyxHQUFnQixPQUE1Q2tNO2lCQUhxQnVRO01BRWxCLGVBQ21FO2FBWXpFd2pDLG1CQUFpQixtQkFBOEI7YUFFL0NDLFNBQVNDO01BQ1g7UUFDYSxrQkFGRkEsVUFFRTs7Ozs7OzRCQUpYRjs7UUFRVyxrQkFORkUsVUFNRSxXQURUQzs7Ozs7Ozs0QkFQRkg7O01BWVMsY0FWQUUsU0FVQSxZQUxQQyxNQUtvQjthQUd0QkMsUUFBUWg4QyxJQUFJODdDLFNBQVNHO01BQ3ZCLG1CQURVajhDLFVBQWFpOEM7TUFFSSxrQkFGYkg7TUFFSjs7O2tCQTFCbUJJO2tCQUFOQztrQkFBTEM7aURBQVdGOzttQkFFM0IsVUFGcUJDO3FCQUlqQixNQUppQkEsUUFJYSx1Q0FEeEJoL0M7cUJBQ3dCLDBCQW9CMUI2QyxVQXhCUW84QyxTQUFXRjttQkFNdkIsMEJBa0JJbDhDLFVBeEJRbzhDLElBQVdGOztvQkEwQmlCO2FBRzVDRyxhQUFhUCxTQUFTRztNQUNoQixJQUFKcC9DLEVBQUksY0FDUixRQURJQSxFQURXaS9DLFNBQVNHLFFBRXhCLGdCQURJcC9DLEVBRWE7YUFHZnkvQyxNQUFNUixTQUFTRztNQUNKLHNCQURMSCxTQUFTRztNQUNKLHFDQUE4QjtRQUd6QzNpQjthQUVBaWpCLHFCQUFtQjdnRDtNQUNyQjtRQUFTLDJCQURZQTs7O3dDQUVNO21CQUFJO2FBRTdCOGdELG9CQUFrQjlnRDtNQUNwQjtRQUFTLCtCQURXQTs7OytCQUVGO1FBTGxCLFdBS3NCO2FBRXBCK2dELG9CQUFvQi9nRDtNQUN0QjtRQUFTLGlDQURhQTs7OytCQUVKO1FBTGxCLFdBS3NCO2FBRXBCZ2hEO01BQWtDQyxhQUFhcmpCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFDbkNaO01BQ3BDLElBQUlhLFFBRjZDeGpCO01BRWpELFNBQ0l5akIsY0FBYy9zQztRQUtSOzs7VUFOTjhzQyxVQUZxREY7WUFVZCxpQkFWY0EsUUFFckRFOztRQVNGLE9BUmdCOXNDOzs7Ozs7O1lBWVYsbUJBUEZuVCxRQUNBbWdEOzs7ZUFTaUJ6SixTQWZMdmpDLFNBZUFzYSxJQWZBdGEsU0FlTHFYLElBZktyWDtXQWdCVixtQkFYRm5ULFFBQ0FtZ0QsU0FTWTF5QixJQUFMakQsSUFBVWtzQjs7aUJBRGYsSUFETWg0QyxFQWJJeVUsU0FjVixtQkFURm5ULFFBQ0FtZ0QsU0FPUXpoRDtrQkFNTixJQURNdVEsSUFsQklrRSxTQW1CVixtQkFkRm5ULFFBQ0FtZ0QsU0FZUWx4QztRQUdaLFFBaEJJalAsRUFSd0RpL0MsWUFDMUJHO1FBd0JKLEtBQTNCLFdBdEJhanNDLGlCQXNCYyxXQXRCZEE7U0F3QlAsdUJBbkJMblQ7UUFrQk0sd0JBbEJOQSxHQW1Cd0I7TUF6QjlCOztXQUZpRHk4QixhQUFRc2pCO1VBK0J2RDtZQUNVO2tCQWhDcUN0akI7YUFnQ3JDLG1CQWhDNkNzakI7O1lBaUMxQixRQURuQixzQkFBSnJoRCxhQUN1QixnQkFEdkJBO2NBQ3dDO2dCQUVwQzs7NkJBSEpBLEVBaENzRHVnRDtpQkFrQzVDbUI7aUJBQVJyd0M7Ozs7Z0JBR0Y7a0JBQ3FCO2lDQU5yQnJSO21CQU1xQjs7NkJBQU4rdUI7bUJBQ2IsWUFESTR5QixRQXRDZ0RwQjs7O3dDQXdDcEMsaUJBUmxCdmdEOzs7b0JBRVUwaEQsZ0JBQVJyd0M7Y0FRSjs7eUJBVkVyUixFQUVVNmhEOzJCQVFSQztvQkFDRixHQVRVRDswQkFXSDl5QixJQVhHOHlCLDJCQUZWN2hELEVBYU8rdUI7b0JBREcsUUFDZ0Q7eUJBSHhEK3lCO2VBQUosZ0JBVkU5aEQsRUFFVTBoRDtlQVFaO3lCQVZFMWhELEVBRVU2aEQ7MkJBWVJHO29CQUNGLEdBYlVILFlBaUJIOXlCLElBakJHOHlCLGlCQWlCSDl5QjtvQkFGSCxJQWpEcUNnUCxzQkFBUXNqQjtzQkFpREQsU0FqRFB0akI7c0JBaURPLHdCQWpEQ3NqQjtvQkFrRHhDLGlCQWxCVHJoRCxHQW1CaUI7eUJBTGZnaUQ7ZUFKSixrQkFWRWhpRCxFQUVVMGhEO2VBUVo7eUJBUllHOzJCQW1CUks7b0JBQ0YsT0FwQlVMLFVBbEMrQjlqQixlQXdEM0I7eUJBSFpta0I7ZUFYSiwwQkFSWVI7ZUFRWjt5QkFWRTFoRCxFQVVFOGhELE9BSUFFLFFBT0FFOzJCQUtJRTtvQkFBZTs2QkFDWCxJQUFMNWlELFdBQUssNEJBQUxBOzt1QkFFSDs7d0JBQVU7d0JBQ0UsMkJBRFJ1dkI7dUJBQ1E7eUJBRUEsSUFBTHhlLGFBQUssV0FKVDh4QyxJQUlJOXhDLEtBRVA7dUJBSFUsaUJBL0JadlEsRUE2Qk0rdUI7NkJBTUcsSUFBTHB2QixXQUFLOzZCQUNFLElBQUxveUIsYUFBSzs7dUJBRVQsaUJBQVU7dUJBQ1YsV0FGS3V3QixJQUNEdHpCO3VCQUNKOzt1QkFZQSxJQURTdXpCLGFBQ0o7O3VCQUdMOzt3QkFBVTt3QkFDRSw0QkFEUnR6Qjt1QkFDUTt5QkFFQSxJQUFMOXVCLGFBQUssV0FKVnFpRCxJQUlLcmlELEdBRVA7dUJBSFUsaUJBeERaSCxFQXNETWl2Qjs7dUJBT0o7O3dCQUFVO3dCQUNFLDRCQURSeXpCO3VCQUNRO3lCQUVBLElBQUxycEMsZUFBSyxTQUFMQSxJQUVQO3VCQUhVLGlCQS9EWnJaLEVBNkRNMGlEOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJFO3VCQUNRO3lCQUVBLElBQUxDO3lCQUFLLFdBSlJGLElBSUdFO3lCQUVQO3VCQUhVLGlCQXRFWjdpRCxFQW9FTTRpRDs7dUJBT0o7O3dCQUFVO3dCQUNFLDRCQURSRzt1QkFDUTt5QkFFQSxJQUFMQyxlQUFLLFNBQUxBLElBRVA7dUJBSFUsaUJBN0VaaGpELEVBMkVNK2lEOzt1QkFPSixJQURJRTt1QkFDSjtxQ0F4REliLGFBdURBYTs7dUJBdkNNLElBREVDLGFBQU56UCxjQUNJO3VCQUNQLE9BREMwUCxNQURFMVA7eUJBR0osV0FIVXlQLElBQ1JDLE9BRUY7dUJBRzRCOzs7K0JBL0NoQ25qRDsrQkEwQ01takQ7K0JBSzBCLGVBQ0Usa0NBUDFCMVA7O3VCQTRDTixJQURHMlA7dUJBQ0g7dUJBR2dCOzRCQXhIdUJybEIsY0FBUXNqQjsyQkF1SDdDLFNBdkhxQ3RqQjsyQkF1SHJDLFdBSENxbEIsSUFHQyxpQkF2SDJDL0I7MkJBd0g3Qzs7Ozt1QkFHRixJQURPZ0M7dUJBQ1A7MkJBQ0l6MUM7dUJBR1k7NEJBL0h1Qm13QixjQUFRc2pCOzJCQThIN0MsU0E5SHFDdGpCLG1CQThIckMsS0FGRW53QjsyQkFFSyw2QkE5SHNDeXpDOzJCQStIN0M7O3lCQUVBLGtCQVBLZ0MsSUFPTCxJQUxFejFDOzsyQkFNQzAxQzs4QkFsSXFCbEM7d0JBb0l4Qjt1QkFFUSxxQkFDRyxrQkFMUmtDLElBSURDO3VCQUVKO3VCQUZVO3dCQUdHLGFBeklrQ2xDLFVBQVJ0akI7d0JBMklyQzs7MkJBM0k2Q3NqQjsyQkFBUnRqQjs0QkFBUXNqQixxQkFBUnRqQjt1QkE2SWhDOzs0Q0FKSDBGLFVBRkErZixVQUdBaGdCO3VCQUdHLFNBQW1DO3lCQW5GdEM0ZTtlQWhCUiw0QkFWRXBpRCxFQVVFOGhELE9BSUFFLFFBT0FFO2NBMEZKLGFBN0dJN3dDOztZbEN1V0osY2tDelBHLFdBaEo4RGl3QyxRQWdDL0R0aEQ7OztpQ0FpSFUsSUFBTGlwQixXQUFXLHVCQUFYQTtrQ0FDTSxJQUFMemdCLFdBQVcsb0JBQVhBOzs7VUFFWjs7UUF2SkYsU0F3Skk7YUFFRmk3QztNQUE4QjFsQixRQUFRc2pCLEtBQUtkLFNBQVNlLFFBQVFaO01BQzlEO2lCQURnQzNpQixRQUFRc2pCLEtBQUtkLFNBQVNlLFFBQVFaLE9BQ2E7YUFFekVnRCxtQkFBcUI1M0IsSUFBaUJ1MUIsS0FBS2QsU0FBU2UsUUFBUVo7TUFDOUQsR0FEdUI1MEIsSUFBUSxRQUFSQSxpQkFBUUMsYUFBUjQzQixVQXhLckI1bEI7TUF5S0Y7aUJBRHVCNGxCLGFBQWlCdEMsTUFBS2QsU0FBU2UsUUFBUVosT0FFdEQ7YUFHTmtELFdBQWE5M0IsSUFBaUJ1MUIsS0FBS2QsU0FBU2UsUUFBUVo7TUFDdEQsR0FEZTUwQixJQUFRLFFBQVJBLGlCQUFRQyxhQUFSNDNCLFVBN0tiNWxCO01BOEtGO2tCQURlNGxCLFdBQWlCdEMsUUFBS2QsVUFBU2UsUUFBUVosT0FDZ0I7YUFHcEV6RyxNQUFNcjRDLEVBQUVwQyxFQUFFNkw7TUFDWjtRQUNFLHVDQUZNekosRUFBRXBDLEVBQUU2TDs7OztVQUlDLElBQVB3NEMsYUFBTyx5QkFBUEEsT0FBTzs7VUFDQyxJQUFQQyxhQUFPLHdCQUFQQSxPQUFPO2tCQUF1QjthQUduQ0MsY0FBY25pRCxFQUFFcEMsRUFBRTZMO01BQ3BCO1FBQ0UsK0NBRmN6SixFQUFFcEMsRUFBRTZMOzs7O1VBSVAsSUFBUHc0QyxhQUFPLHlCQUFQQSxPQUFPOztVQUNDLElBQVBDLGFBQU8sd0JBQVBBLE9BQU87a0JBQXVCO2FBRW5DRSxhQUFhcGlELEVBQUVwQyxFQUFFNkw7TUFDbkI7UUFJRTtTQUhJZzJDO1NBQ0FULFFBSFNoL0M7U0FJVCtoRCxhQXBNSjVsQjtTQXFNQSxtQ0FESTRsQixVQUZBdEMsS0FDQVQsS0FIV3BoRCxFQUFFNkw7Ozs7O1VBT04sSUFBUHc0QyxhQUFPLHlCQUFQQSxPQUFPOztVQUNDLElBQVBDLGFBQU8sd0JBQVBBLE9BQU87a0JBQXVCO2FBR25DRyxZQUFZamtEO01BQ2QsSUFBSXFELElBQUosc0JBRGNyRDtNQUNkLFNBQ1Fra0QsS0FBS3BrRDtRMUN0VWhCLEkwQ3NVZ0I4UTtRQUNYO2FBRkV2TixPQUNTdU4sSUFDTSxPQUZmdk47VUFHTSwwQkFKSXJELEVBRUQ0UTtZQUVjLFFBRmRBO1VBR04sT0FITUEsSUFHTDtNQUpSO1FBTU0sSUFDSkEsSUFESSxRQVBRNVE7Ozs7VUFVVjtZQUFZLElBQ1ZGLEVBRFUsUUFWRkU7OztrQ0FZZSxPQVh6QnFEO1lBVU87c0JBQUx2RDtRQUhDO2tCQUFMOFEsWUFLSzthQUdMdXpDLFlBQVl2a0Q7VUFBZ0IrZ0QsYUFBTkMsY0FBTHdEO29CQUFLeEQ7ZUFFVixNQUZBaGhELElBRUEsc0JBRkt3a0Q7ZUFHcUIsTUFIMUJ4a0QsSUFHMEIsc0JBSHJCd2tELE9BR3FCLFlBSFZ6RDthQU01QjBELG9CQUFvQnJrRDtNQUN0QixJQUFJSDtNQUFKO3dCQUNnRTZDO2lCQUFqQyxTQUFpQ0EsT0FENUQ3QyxTQUN3QyxzQkFBeUIsT0FBTDZDLENBQU87ZUFGakQxQyxFQUVtRDthQXlCdkVza0QsTUFBUXg0QixJQUFleTBCO01BQ3pCLEdBRFV6MEIsSUFBTSxRQUFOQSxhQUFNQyxhQUFOdzRCLE03QmpSQXpqRDtNNkJrUk07MEJBRFN5L0M7T0FFZixnQkFuQ1I0RCxjQWtDRUs7T0FFTSxZQURObmhELElBRk1raEQ7TUFJRDt3QkEzQlNFO2lCQUNsQixTQURrQkEsT0FDbEIsS0FEa0JBO2lCQUNsQix3QkFEa0JBOztxQkFPZDs0QkFQY0E7c0JBT0QscUJBRFdaO3NCQUVYLGdCQUFhLFFBUmhCMy9DLFFBT053Z0Q7cUJBRVE7Ozt3Q0FBTyxJQURmQyxTQUN3QixvQkFISmQ7bUJBS1g7b0JBREh4NEMsSUFWSW81QztvQkFVVjdELEtBVlU2RDtvQkFXRCxtQkFESHA1QztvQkFDRzswQkFYSG5ILFFBWU4yZ0QsZUFEQUQ7bUJBQVMsT0FFVDduQztxQkFJVztvQ0FKWEE7c0JBS1csYUFBVyxvQkFSaEIxUixPQUNOdTVDO3NCQVFXOzZCQVRMdjVDLElBQ051NUMsT0FPVyxzQkFSTHY1QyxPQUNOdTVDO3FCQVNVLGVBVlZoRSxLQVVVLElBRlJsa0MsT0FFaUIsSUFIakJvb0MsT0FFQWpvQzttQkFKUSxlQUxWK2pDLEtBS1Usb0JBTEp2MUM7aUJBTFYsT0FMY281QztlQXdCZEQsVUFHZ0M7YUFTbENPLFNBQVNDLEtBQUszb0MsSUFBSTRvQztNQUNYLGtCQURXQSxNQUVWO2VBRU5FO1FBQ1MsSUFaSG5sRCxFQVlHLFNBSFR5RTtRQUdTLEdBTEZ1Z0Q7VUFOWCw4QkFEVWhsRDtVQUVJLE9BRFZxRCxjQUNVLGdCQUZKckQsRUFDTnFEO3FCQUVGLE1BSFFyRCxJQUNOcUQ7VWxDb0pFLHVCa0NySklyRDtVQUNWLElBWU1vbEQ7O2tCQWJJcGxEO1FBY1IsY0FESW9sRCxLQUhGRjtRQUlGLGVBTEV6Z0QsSUFNYztNQU5SOztVQVVJLElBQUovQixFQUFJLG1CQVhWcUI7VUFXVSxHQUFKckIsTUFaTTJaLElBYU0sY0FBYyxTQVhoQzVYLElBVU0vQjs7Ozs7VUFLUCxPQWZDK0IsT0FlMEI7VUFDOUIsc0JBakJJVjtVQWtCVSxtQkFoQlZtaEQ7bUJBZ0IyQjs7SUFFbEIsU0FBWEcsZTFDdlpMLE8wQ2tZS047SUFxQlc7SUFFQyxTQUFaTyxnQjFDelpMLE8wQ2tZS1A7SUF1QlksU0FFWlEsVUFBVWxwQyxJQUFJNG9DLEtBQUtPO01BQ1osSUFBTHZpRCxHQUFLLFNBRE9naUQ7TUFFaEIsZ0JBQWdCamxELEdBQUssMEJBRGpCaUQsU0FDWWpELEVBRkpxYyxJQUVnQyxFQUZ2Qm1wQztNQUVyQixhQURJdmlELEdBRVE7SUFMRTtJQU9BLFNBQVp3aUQscUIxQ2hhTCxPMEMyWktGO0lBS1k7SUFFQyxTQUFiRyxzQjFDbGFMLE8wQzJaS0g7SUFPYTs7O09BeEhidEw7T0FRQThKO09BWkFIO09BTEFGO09BSEFEO09BMkJBTzs7O09BcE1BakQ7T0FOQUQ7T0FzUUF3RDtPQTVQQXZtQjtPQThSQXNuQjtPQUVBQztPQU9BRztPQUVBQztJQUFhOzs7OztRckM5WWJDO0lBQVcsU0FJWEMsTUFBTXpsRCxFQUFFN0U7TUFDRixJQUFKa0UsRUFESVcsTUFBRTdFO01BRUgsZ0JBREhrRTtlQUdJLGFBSEpBO2lCQUlGLHlCQUpFQTtpQkFLSSxhQUxKQSxXQU1GLFVBTkVBO2VBRUYseUJBRkVBLEVBUUM7SUFiUSxTQWVQcW1ELGFBQWExbEQsRUFBRTdFO01BQ3JCLEdBRG1CNkUsZ0JBQUU3RSxFQUNHO01BQ1Usc0JBRmY2RSxFQUFFN0UsV0FFQyxXQUZINkUsRUFBRTdFO01BRUMsMENBQWtDO0lBakIzQyxTQTBCWHdxRCxhQUFhM2xEO01BQ2YsU0FBUTRsRDtRTC9DWDtRSytDa0I7O2dCQUNMOWpELGNBQU5DOztjQUNTLDhCQURUQSxHQUZXL0I7O2dDQUtJLElBQUxILFNBQUssVUFBTEE7d0JBSEppQzs7VUFJQSxTQUFJO01BQ1QsWUFqQ0gwakQsWUFpQ3dCO0lBakNiLFNBbUNYSyxrQkFVTTdsRDtNQVZjLEdBVWRBLG9CQVRXO1NBU1hBLHFCQVJZO1NBUVpBO3lCQVBvQjhsRCxrQkFBTkMsZ0JBQU5qQjs7aUJvQ2pCZGxGLFFwQ25CQXpsRDtpQkFvQ2MycUQ7aUJBQU1pQjtpQkFBTUQ7OztTQU9wQjlsRDs7O1NBTHFCZ21EO1NBQU5DO1NBQU5DOztpQm9DbkJmdEcsUXBDbkJBemxEO2lCQXNDZStyRDtpQkFBTUQ7aUJBQU1EOzs7U0FLckJobUQ7OztTQUhpQ21tRDtTQUFOQztTQUFOQzs7aUJvQ3JCM0J6RyxRcENuQkF6bEQ7aUJBd0MyQmtzRDtpQkFBTUQ7aUJBQU1EOzs7TUFJckMsc0JBRElubUQ7UUFLcUMsZ0JBTHJDQSxRQXpCUixNQXlCUUE7UUF6QlI7U0FJb0M7NEJBcUI1QkE7VUFyQmdCLFdBcUJoQkE7ZUFyQmdCOzs7OzttQkFERixlQXNCZEEsVUF0QmM7bUJBMEJac21EO01BRk8sT0FGVHRtRCxJQU1zQjtJQW5EakIsU0FxRFh1bUQsWUFBVWwrQztNQUNOLHVCQURNQTtNQUNOLFVBQ00sSUFBTHhJLFdBQUssT0FBTEE7TUFDRyx5QkFIRXdJLEVBR2lCO0lBeERoQixTQTBEWG0rQyxNQUFNQyxJQUFJNzNCO01BQ1o7UUFDRSxvQkFGTTYzQixJQUFJNzNCLEtBSVY7WUFERzV1Qjs7UUFDZ0MscUJBRGhDQTtRQUNIO1FBQ0EsY1dyREFrQztRWHFEQSxNQUZHbEMsRUFHSTtJQWhFSSxTQWtFWDBtRCxRQUFNRCxJQUFJNzNCO01BQ1o7UUFDRSxvQkFGTTYzQixJQUFJNzNCO1lBR1A1dUI7O1FBQ0gsY1c3REFpQztRWDhEbUMscUJBRmhDakM7UUFFSDt1QkFDTTtJQXhFSyxTQThFWDJtRCxzQkFBc0JDLElBQUssT0FBTEEsRUFBTztJQTlFbEIsU0FnSFhDLHNCQUFzQkQ7TUxwSTNCLFVLcUlZLG1DQURlQSxJQUVGO0lBbEhULFNBb0hYRSxzQkFBc0J6cUIsSUFBSTd4QjtNQUM1QixTQUFJSixLQUFLMjhDO1FBQ1AsT0FET0E7dUJBRGUxcUI7eUVBS2lEO01BSnpFLFNBRDRCN3hCO1FBY3hCO2NBZHdCQTtTQWN4QixLQWR3QkE7U0FjeEIsS0Fkd0JBO1NBY3hCLEtBZHdCQTs7O1NBZWhCLFVBZmdCQTtRQWNuQjs7TUFMTCxHQVR3QkEsUUFVb0I7TUFFTjtNQUEvQix5Q0FLdUM7SUFySXJDLFNBbUpYdzhDLG9CQUFvQkMsUUFBUUM7TUFDSSxJQWJFQyxVQWFGLHNCQURKRDtNQVg5QixHQURvQ0M7UUFNaEMsTUFOZ0NBLGFBTWhDLEtBREd2a0QscUJBQ0g7OztVQUNFO1lBQU0sZ0NBRFJ6SCxFQUNnQyxpQkFGN0J5SCxFQUNIekg7WUFDUSxVQUVVLElBQVA0QyxhQUFPLG1CQUdBa3BELGNBSFBscEQ7WUFGSCxTQURSNUM7OztRQUhBO3FCQVNrQjhyRCxhQUNpRDtJQXBKMUQsU0F1SlhHLGdCQUFnQkg7TUFDVSwyQkFEVkEsUUFDVSxrQ0FBc0I7SUF4SnJDLFNBdUtYSSx3QkFBd0JIO01BQ04sSUFkRUMsVUFjRixzQkFETUQ7TUFaMUIsR0FEc0JDO1FBS1YsSUFETHZrRCxFQUpldWtELGFBS1Ysc0JBREx2a0QscUJBQ0s7O2NBQ1J6SDtVQUNFO1lBQU0sZ0NBRFJBLEVBQ2dDLGlCQUg3QnlILEVBRUh6SDtZQUNRLFVBRVUsSUFBUDRDLGFBQU8sbUJBSmRvRCxRQUlPcEQ7WUFGSCxTQURSNUM7OztRQUtBLGdCQU5JZ0c7TUFGTCxxQ0FXc0Q7SUF4SzVDLFNBMEtYbW1ELHdCQUVpQnh1QztNQUZTLGFBRVRBLDBCQUFlO0lBNUtyQixTQThLWHl1Qyx5QkFDZXp1QyxPQURZLGFBQ1pBLG1CQUNZO0lBaExoQixTQXlMWDB1Qyx3QkFFZTF1QztNQUZXLGFBRVhBLHNEQU1kO0lBak1VLFNBbU1YMnVDLHVCQUdlM3VDO01MMU5wQixTSzBOb0JBO09BQUssVUFBTEE7TUFEb0IsUUFDRDtJQXRNdkIsU0F3TVg0dUMsZ0JBQWdCUjtNQU9aLGdDQVBZQTtNQU9aO1FBR0YsMkJBREtDO1FBSW1COzs7O1lBRUg7b0NBTmhCQTthQUNhOztZQUtHO3lCQU5oQkE7TUFERyxRQVVDO0lBMU5BLFNBNE5YUSw2QkFBNkJDO01BQy9CLDBCQUQrQkEsT0FDSjtJQTdOZCxTQXdPWEMscUJBQXFCakIsSUFBSyxPQUFMQSxhQUFvQjtJQXhPOUIsU0FtUFhrQjtNQUEyQyxpRUFBc0I7SUFuUHRELFNBd1BQQyxpQkFBaUJDO01BQ3ZCO1FBQW1CO3NCQXpQakJ4QztTQXlQaUIsZ0JBREl3QyxHQUNuQkM7U0FFVSx3QkEzUFp6QyxTQXlQRXlDLGFBQ0FDO1NBQ1UsU0FBVnpoRDtRQUFVO29CQUN5QjtJQTVQMUIsU0FnUVgwaEQsU0FDRW5vRCxHQUNKLDBCQURJQSxTQUNzQztJQWxRN0IsU0FvUVhvb0QsWUFBWXBvRCxHQUNILElBQVB3SyxLQUFPLFNBREd4SyxHQUVMLE9BREx3SyxPQUM4QjtJQXRRckIsU0F3UVg2OUMsY0FBY3JvRCxHQUNMLElBQVB3SyxLQUFPLFNBREt4SyxHQUVQLE9BREx3SyxPQUNpQztJQTFReEIsSUErUVg4OUMsT0EvUVc7YUErUlhDLCtCQUFtQ3Y1QixJQUFJazRCO01BQ0gscUJBRERsNEI7TUFDckM7TUFDQSxvQld2UkU5c0IsT1hxUnVDZ2xEO01BQ0gsSUFFbENzQixPQUFTO1NBQVRBO1FBRW9CLGFBRnBCQTtRQUVGLGNBQWMsaUJBckJkRjtNQXFCaUMscUJXMVJqQ3BtRCxPWDJSVTtJQXJTQyxJQXVTWHVtRCw4QkFSQUY7SUEvUlcsU0F5U1hHLCtCQUErQlY7TUFBSyxnQ0FBTEEsR0FBSyxRQUFnQztJQXpTekQsSUEyU1hXO0lBM1NXLFNBK1VYQywwQkFBMEI1NUIsSUFBSTY1QjtNQUNoQztRQTVCQTtVQUtNO1dBRkEzQjtZQXdCMEIyQixnQkFwQzlCRixnQkFnQkk7VUFBd0IsS0FFdkI7VUFDTDtZQUNFOzZCQXhCRkYsOEJBd0MwQno1QixJQXhCdEJrNEI7O2dCQVNDNEI7O1lBQ2tCOzthQUNpQixpQkFhZDk1QjtZQWJ4QjtZQUNBLG9CV3pURjlzQixPWDZTSWdsRDtZQVVtQixTQUluQixZQUxDNEI7WUFJSDtZQUVBLG9CVzVURjVtRCxPWHVUTTZtRDtZQUFpQixTQU1yQixjVzdURjdtRDtVWCtTSTs7O29DQVhOO21CQTRCTTtRQVVKOzJCQUFFO0lBTUo7O01BWEUwbUQ7SUFXRixvQkw5V0g7SUs4V0csb0JMOVdIO0lLOFdHO01MOVdIO0lLOFdHOzs7T0FoTEV0QjtPQUlBQztPQVdBQztPQVVBQztPQS9FQVg7SUFzT0Ysb0JMOVdIO0lLOFdHLG9CTDlXSDtJSzhXRzs7O09BclNFUDtPQWxCQVY7T0F1QkFXO09BUUFFO09BcUZBVTtPQTRGQVU7c0JMdlFMOztPSzRRU0M7T0E5TkpwQztPQW9EQWdCOztPQXFFQUs7T0FvQkFLO09Bd0hBa0I7T0FVQUc7T0FqR0FoQjtPQW9CQUM7O09BWUFFOzs7O09BNEJBTztPQUlBQztJQWtGRjthc0M3VkVXLFFBQU16bUQsU0FBTSxPQUFOQSxDQUFPO2FBQ2IwbUQsS0FBSzVwRCxFQUFFVyxFQUFFQyxHQUFJLGtCQUFSWixFQUFJWSxFQUFGRCxFQUFXO2FBQ2xCa3BELE9BQU96NkMsRUFBRWxQLEdBQVEsc0JBQVZrUCxFQUFFbFAsRUFBYTs7OztJQUlqQjs7UUFBNkI7VUFDZCxJQUFQeXZCO1VBQVkscUNBQTBCLFlBQXRDQTtRQUNWLFFBQUk7SUFGRixTQUlMbTZCLFFBQVVDLFVBQXdCQztNQUNwQyxTQUFJQztRQUNGO1VBQUksb0JBRk1GLGFBR1I7Y0FEa0IvZ0Q7O1VBQ1QsK0RBRFNBO1VBQ1QsK0JBQUx1K0M7VUFBSyxVQUMwQztNQUh2RDtRQUtNLElBQ0o3NkMsT0FESSxXQU44QnM5QztZQVF4QkU7O1FBQ00sSUFBVkMsUUFBVTtRQUNkO21DQUZRRCxTQUNKQztRQUNKLE1BRlFEO01BREE7YUFBVng5QyxNQUlnRDtJQWYzQyxrQkFOTGk5QyxRQUNBQyxLQUNBQyxPQVFBQztJQUpLO2FDaURMTSxXQUFXbG5EO01BQ0osb0NBQUw4c0I7TUFDSixtQkFGYTlzQjtNQUNKLFNBQUw4c0I7TUFFSixtQkFIYTlzQjtNQUNKLFNBQUw4c0I7TUFHSixtQkFKYTlzQjtNQUNKLFNBQUw4c0I7TUFJSixtQkFMYTlzQjtNQU1iLFFBTmFBO01BQ0o7T0FLVCxLQUxJOHNCO09BTW1CO1lBTm5CQTtNQU9KLG1CQVJhOXNCLFFBT1R4QjtNQU5LLFNBQUxzdUI7TUFRSixtQkFUYTlzQixRQU9UeEI7TUFOSyxTQUFMc3VCO01BU0osbUJBVmE5c0IsUUFPVHhCO01BSUosUUFYYXdCO01BQ0o7T0FVVCxLQVZJOHNCO09BV21CO1lBWG5CQTtNQVlKLG1CQWJhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFhSixtQkFkYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BY0osbUJBZmE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWVKLG1CQWhCYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BZ0JKLG1CQWpCYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BaUJKLG1CQWxCYTlzQixRQVlUdkI7TUFPSixRQW5CYXVCO01BQ0osU0FBTDhzQjtNQW1CSixtQkFwQmE5c0I7TUFDSixTQUFMOHNCO01Bb0JKLG1CQXJCYTlzQjtNQUNKLFNBQUw4c0I7TUFvQkosMEJBckJhOXNCLGFBc0IrQjthQUcxQ21uRDtNQUNrQjs7Ozs7TUFDSCxRQURaRyxLQUFTRixLQUFMQyxRQUM0QzthQW1CbkRFLGFBQWF6cUQsR0FFZixZQUNXO2FBR1QwcUQsYUFBYW5uRCxHQUFJLGlCQUFVO3lCQXdCQyxRQUFFO3lCQURGLFFBQUU7eUJBRFIsUUFBSTt5QkFEQSxRQUFJO1FBRjFCb25ELGdDQUNzQixRQUFJO2FBVzFCOTdCLE1BQ0QrN0IsY0FDQ3QrQixJQUNGdStCO01BQ0EsR0FGRXYrQjtPQUFpQixRQUFqQkEsc0JBQWlCQzs7V0FBakJ1K0IsZS9CekRJeHBEO00rQjJETixrQ0FIQ3NwRCxjQUNDRSxlQUNGRCxRQUM0QztnQkFoQjFDRixhQVlBOTdCO3dCNUMzSlQ7Ozs7OztPNEN3RUt1N0I7T0F5QkFDOzJCNUNqR0w7OztPNENzSEtJO09BTUFDOzs7YUNsR0FLLE9BQU9yc0Q7TUFDVCx1QkFEU0EsTUFDVCxzQkFEU0EsS0FDOEI7YUFFckNzc0QsTUFBTWxwRCxHQUFXLG1DQUFYQSxHQUFxQzthQUUzQ21wRCxVQUFVdnNELElBQUlrRixJQUFJQztNN0MvQnZCOzs7UTZDK0JtQkQ7Ozs7UUFBSUM7OztnQ0FBUm5GLE9BQVFtRixXQUFKRDtPQUdYLHVCQUhPbEYsSUFBSWtGLElBQUlDO01BRWYsd0NBQ3lCO2FBRTVCcW5ELFNBQVNwcEQsRUFBRThCLElBQUlDO01BQWdCLHNDQUF0Qi9CLEdBQUU4QixJQUFJQyxJQUFrRDthQUVqRTRoRCxLQUFLMEY7TUFDRSxJQUFMNW1ELEdBQUssV0FERjRtRDtNQUNFO1FBQ0gsSUFDRi95QyxFQURFLHNCQURGN1Q7WUFHVXlFLDhCQUFLLHNCQUhmekUsSUFHZSxNQUFMeUU7TUFETCxzQkFGTHpFO01BRUssT0FBTDZULENBQ21DO2FBRXJDZ3pDLFNBQU9wbkQsS0FBS3FuRCxRQUNkLHFCQURTcm5ELEtBQUtxbkQsT0FDVzthQUV2QkMsUUFBTXRuRCxNQUFPLDJCQUFQQSxRQUFrQzthQUV4Q3VuRCxTQUFTanJELEdBQ1gsZUFEV0EsMkJBQ2lFO2FBRTFFa3JELE9BQU9wekM7TUFDVCxnQ0FEU0EsR0FDcUI7TUFDakIsaUNBQ2J0YztNQUNFO1FBQWtCLElBQWQ2RSxFQUFjLGdCQUpYeVgsRUFHVHRjO1FBRWdDLHNCQUg1QjRRLE9BQ0o1USxVQUVnQyxTQUQxQjZFO1FBRTRCLHNCQUo5QitMLFFBQ0o1USxtQkFHa0MsU0FGNUI2RTtRQUFjLFNBRHBCN0U7O1FBS0EsNEJBTkk0USxRQU15QjthQUUzQisrQyxTQUFTanJEO01BQ1gsZ0NBRFdBLEdBQ21CO01BQTZCLFNBQ3ZEa3JELE1BQU14b0Q7UUFDUixTQURRQTs7NEJBSU0sUUFKTkE7OzBCQUdNLFFBSE5BOztpQ0FFTSxPQUZOQTtRQUtELGdEQUEwQztNQUduRCxpQ0FDQXBIO01BQ0U7b0JBREZBLE1BRmlDLFdBQU0sZ0JBVDVCMEUsRUFTRjZCO1FBR1A7VUFGRXFLLE9BQ0o1USxFQUNxQixLQUhSLE1BQU0sZ0JBVFIwRSxFQVNGNkI7UUFHUCxTQURGdkc7O1FBR0EsNEJBSkk0USxRQUl5Qjs7Ozs7O09BbEQzQnErQztPQUdBQztPQUVBQztPQUtBQztPQUVBekY7T0FNQTJGO09BR0FFO09BS0FFO09BVUFDOzthaEM1QkVFLGlCQUFzQixpQ0FBMEI7YUFDaERDLE9BQU9DLElBQUlDO01BQ2IsT0FEYUEsU0FBSkQsYUFDVCxTQURhQyxPQUNiLFFBQ2tCO2FBR2hCQyxVQUFVdnJELEVBQUV3ckQ7TUFDZCxpQkFEY0EsMkJBT2QsRUFESUMsa0JBRUo1cEQ7TUFDRTt5QkFUVTdCLEtBUVo2QjtRQUNFLFNBREZBOztRQUNFLElBRUYsaUJBQ2tCLG1CQUxkRCxPQUlKO1FBQ2tCO2NBQWxCdEc7VUFDRTs7ZUFERkE7YUFDRSxXQURGQSxFQUxJc0c7YUFRb0IsbUJBVHBCNnBELE9BUUVsMUI7WUFIRjd4QixVQVYrQixXQVUvQkEsUUFWdUMsNEJBQTFCdkU7WUFZZjtrQkFGRXVFO2FBUFc7YUFEMEM7YUFBMUI7YUFBbkI7YUFhRyx1QkFoQkgxRSxLQWFONFA7WUFHSixpQkFoQlU1UCxLQWFONFA7WUFBSixTQURGdFU7OztRQU1BO2lCQUFVO2FBR1Jvd0QsT0FBS0Y7TUFDTSxJQUFUdC9DLE9BQVMsYUFDYixVQURJQSxPQURHcy9DLE1BRVAsT0FESXQvQyxNQUVFO2FBR0p5L0Msc0JBQXlCLHNDQUFnQjthQUV6Q0MsT0FBSzVyRCxHQUNNLElBQVRrTSxPQUFTLGFBQ2IsT0FESUEsT0FER2xNLEdBRVAsT0FESWtNLE1BRUU7YUFJSjIvQyxLQUFLN3JEO01BQ1AsUUFET0E7TUFDUDtZQURPQTtPQUVNLHdCQUZOQTtPQUVNLE1BRk5BO09BR007eUJBSE5BOztTQUVIOHJEOzs7T0FDUyxTQUFUQztPQUFTLEtBSE4vckQ7TUFNUCxpQkFOT0EsdUJBS0hnc0Q7TUFDSixPQURJQSxRQUVJO2FBR0ZDLE9BQU9qc0QsRUFBRUY7TUFDZjtRQUFRLFdBREtFLEdBQ0wsV0FBSkwsRUFEV0c7UUFDUCxrQkFET0EsbUJBQ1hILElBQ0FEO1FBQytDLE9BRC9DQSxFQUNnRDthQUVsRHdzRCxNQUFJbHNELEVBQUVtc0Q7TWIzRmIsbUJhMkZhQSxvQkFHSCxjQUhDbnNELEVBQUVtc0Q7TUFFSCxrQ0FDYzthQTJCakJDLFNBQVNwc0QsRUFBRW1zRDtNQUNiLE9BRGFBO1FBR1IsZ0JBSFFBO1NBeEJiO1dBQ1MsWUF1QkVuc0QsR0F0QkYsUUFzQkVBO1dBdEJGLEdBc0JJbXNEO1lBakJULFVBTEFodUMsd0JBREFELGNBRUN2ZSxFQUlHMHNEOztZQUtLO3FCQVlGcnNEO2FBWkU7Z0JBQUxxZSx5QkFWSkY7Ozs7Y0FEQUQ7Ozs7O2FBRUN2ZSxFQVlHMnNEO1dBZEMsSUFvQkw1c0QsRUFBSixTQWxCS0MsRUFxQlF3c0Q7V0FIYixrQkFHYUEsdUJBckJSeHNELElBa0JERDtXQUM4QyxPQUQ5Q0E7UUFTRixjQU5TTSxFQUFFbXNEO01BRVgsdUNBSWM7YUFZZEksTUFBTXZzRCxFQUFFbXNEO01BQ1Asa0JBRE9BLFNBRUw7TUFWTDtRQUFzQixZQVFkbnNELEdBUGdELElBQWYsS0FPakNBLGNBTkEsRUFGSmtlLEtBQ0FDLEdBRUksV0FESnhlLEVBTU13c0Q7UUFKTSxvQkFGWnhzRCxJQUNBRCxvQkFLTXlzRDs7UUFGTCxPQUhEenNELEVBUWlCO2FBYW5COHNELE1BQU14c0QsRUFBRW1zRDtNQUNQLGtCQURPQSxZQUVMO01BWEw7UUFBOEI7Z0NBQVIsS0FTZG5zRDtTQVJ5Qyx5QkFBRCxvQkFBUixLQVFoQ0E7U0FQZ0QseUJBQTlCLG9CQUFlLEtBT2pDQTtTQU5BLGdCQUhKa2UsR0FHbUIsY0FGbkJDLEdBQ0FFO1NBRUkseUJBREoxZSxFQU1Nd3NEO1FBSk07O1lBQWIsZUFGQ3hzRCxFQUNBRDtZQUNvRCxlQUEzQixlWHJHN0J6RixVV3lHVWt5RDs7UUFGTCxPQUhEenNELEVBUWlCO0lBS2hCLFNBRkgrc0QsVUFFT3pzRCxFQUFFbXNELE9BQWdFLE9BQXBDLE1BQTlCbnNELEVBQUVtc0QsTUFBZ0U7SUFDdEUsU0FXSE8sUUFBTTFzRCxFQUFFbXNEO01BTFksWUFLZG5zRCxHQUpjLFFBSWRBO01BQW9CLFFBTHhCd1YsbUJBQ0E4YyxvQkFJTTY1QixLQUEyQjtJQVhoQyxTQWFIUSxLQUFLM3NELEdBQUssbUJBQUxBLFdBQXVCO0lBYnpCLFNBZUg0c0QsT0FBTzVzRDtNQUM0QyxPQUFULEtBRG5DQSxjQUU0QyxHQUFULEtBRm5DQSxjQUdGLE9BRkhrZSxLQUNBQyxRQUMrQjtJQWxCOUIsU0FvQkgwdUMsT0FBTzdzRDtNQUM0Qzt5Q0FBRCxvQkFBUixLQURuQ0E7T0FFNEMsa0NBQUQsb0JBQVIsS0FGbkNBO09BRzRDLGtDQUFELG9CQUFSLEtBSG5DQTtNQUlGO2VBSEhrZTtlQUdxQztpQkFBbEIsc0JBRm5CQyxPQUVzQyxzQkFEdENFLFFBQzBEO0lBSXpELFNBRkh5dUMsV0FFTzlzRCxHQUFrQyxPQUFWLE9BQXhCQSxFQUFrQztJQUN0QyxJQU1MdVQsYUFOSzthQXNCTHc1QyxjQUFVLFlBaEJWeDVDLFVBZ0I0QjtJQXRCdkIsU0F1Qkx5NUMsTUFBSWIsT0FBUSxhQWpCWjU0QyxVQWlCSTQ0QyxNQUErQjtJQXZCOUIsU0F3QkxjLFdBQVNkLE9BQVEsZ0JBbEJqQjU0QyxVQWtCUzQ0QyxNQUFvQztJQXhCeEMsU0F5QkxlLFFBQU1mLE9BQVEsYUFuQmQ1NEMsVUFtQk00NEMsTUFBaUM7SUF6QmxDLFNBMEJMZ0IsWUFBVWhCLE9BQVEsaUJBcEJsQjU0QyxVQW9CVTQ0QyxNQUFxQztJQTFCMUMsU0EyQkxpQixRQUFNakIsT0FBUSxhQXJCZDU0QyxVQXFCTTQ0QyxNQUFpQztJQTNCbEMsU0E0QkxrQixRQUFNQyxPQUFRLGVBdEJkLzVDLFVBc0JNKzVDLE1BQWlDO0lBNUJsQyxTQTZCTEMsY0FBVSxZQXZCVmg2QyxVQXVCNEI7SUE3QnZCLFNBOEJMaTZDLGdCQUFZLGNBeEJaajZDLFVBd0JnQztJQTlCM0IsU0ErQkxrNkMsZ0JBQVksY0F6QlpsNkMsVUF5QmdDO0lBL0IzQixTQWdDTG02QyxvQkFBZ0Isa0JBMUJoQm42QyxVQTBCd0M7SUFoQ25DLFNBa0NMbzZDLFlBQVVuQyxNQUFPLGlCQTVCakJqNEMsVUE0QlVpNEMsS0FBbUM7SUFsQ3hDLFNBbUNMb0MsT0FBS3BDLE1BQU8saUJBN0JaajRDLGFBNkJLaTRDLE1BQXlDO0lBbkN6QyxTQW9DTHFDLGlCQUF5QiwyQ0FBZTtJQXBDbkMsU0F3Q0xDLGlCQUFlLGNBbENmdjZDLFVBa0NpQztJQXhDNUIsU0F5Q0x3NkMsVUFBVS90RCxHQUFJLGNBbkNkdVQsVUFtQ1V2VCxFQUEwQjtJQXpDL0I7OztPQXBJSDByRDtPQU1BQztPQUVBQztPQU9BQztPQWVBSztPQThCQUU7T0FrQkFHO09Bc0JBRTtPQU5BRDtPQW9CQUU7T0FFQUM7T0FFQUM7T0FLQUM7T0FNQUM7S0FHRzs7T0FtQ0xjO09BREFEO09BRUFFO09BZEFkO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDOztPQVFBSTtPQUNBQztJQXpDSzthaUN6SkxDLGtCQUFrQmxuQztNQUNwQixTQURvQkEscUJBQ3BCLGNBRG9CQSx5QkFFQzthQUVuQm1uQyx1QkFBdUJubkMsR0FDekIsU0FEeUJBLFNBQ3pCLFFBQWtDOztNQU01Qiw0Q0FERm9uQzs7OztNQUVGO1FBQUk7Ozs7O1VBRkZBO0lBR0o7bUNBSElBO0tBR0osY0FKRUM7SUFJRixTQUlFRSxpQkFBZSwwQkFBa0I7SUFKbkMsU0FLRUMscUJBQW1CLE9BSG5CRixhQUc4QjtJQUxoQyxJQU9FRyx5QjlDNURMO0k4Q3FERyxTQWVNQyxjQUFjcnVELEVBQUVMO005Q3BFekIsSThDb0V1QnVaO01BQ3BCO1dBRHNCdlosS0FBRnVaLElBQ0wsT0FES0E7UUFFZix1QkFGZUEsYUFFc0IsT0FGdEJBO1FBR2YsUUFIZUE7aUJBR1E7SUFsQjVCLFNBd1NNbzFDLFNBcFJLM2lDLElBQXNCNGlDO01BQ2pDLEdBRFc1aUMsSUFBUyxRQUFUQSxjQUFTQyxhQUFUNGlDLE9BbEJUUDtNQW1CTSxJQUFKcHVELEVBQUksaUJBRHlCMHVEO01BQ3pCLEdBREdDO09BRWU7MEJBZnhCSjtRQWV3QixrQkFmeEJBLHFCMUJqQ0F4aUQsaUIwQmlDQXdpRDtRQWVFL0MsS0FBc0I7O1dBQXRCQTtNQUM4QywyQkFGOUN4ckQsS0FDQXdyRCxLQURBeHJELEVBRWtFO0lBdkJ0RSxTQXlCRTR1RCxRQUFNOW5DO01BQ1IsYUFEUUE7TUFDUixhQURRQSxTQUNXLE9BRFhBLCtCQUlMO0lBN0JILFNBK0JFK25DLFFBQU0vbkM7TUFDUixJQUFJempCLElBREl5akI7TUFHRyxRQUhIQSxnQkFDSnpqQixRQUVPLElBSEh5akI7UUFLSCxTQUVzQyxzQkFBcEIsSUFQZkEsU0FPbUM7TUFIekMsZUFKTUEsRUFRTDtJQXZDSCxTQXlDRWdvQztNQUFrQjs7U0FFWmpPO1NBQUtockI7U0FBTTdvQjtTQVdYM1AsVUFYQXdqRCxJQUFLaHJCLEtBQU03b0I7Y0FXWDNQO2lCQVhXMlA7Ozs7YUFHTCtoRDthQUFLMzRCO2FBQU00NEI7YUFDWHJ2RCxLQURBb3ZELE1BQUszNEIsT0FBTTQ0QjtZQUlDLFVBSFpydkQ7K0JBRFdxdkQ7O2lCQVFqQjN4RDtNQVpHLFFBY047SUF4REwsU0EwREU0eEQsT0FBS3AvQztNQUFJLFNBQUpBLFFBQUksS0FBSkEsUUFBb0IsV0FqQnpCaS9DLGdCQWlCS2ovQztNQUFvQixVQUFwQkEsdUJBQXNEO0lBMUQ3RCxTQTRERXEvQyxTQUFPcG9DLEdBQUksT0FBSkEsSUFBVTtJQTVEbkIsU0E4REVxb0MsbUJBQW1CQyxTQUFTQyxRQUFRQyxNQUFNQztNQUM1QzthQUQ0Q0E7T0FFM0IsMEJBRGJDO09BQ2EsS0FGcUJGO09BRXJCOztZQWdCakJ6dEQ7O1FBQ0U7VUFBYyw0QkFuQnNCeXRELE1Ba0J0Q3p0RDtVQWZ3Qjs7Y0FPUDtlQUxQZy9DO2VBQUtockI7ZUFBTTdvQjtlQUNYMGlELE9BTm9CTCxnQkFLcEJ4TyxJQUFLaHJCO2VBS0UsZ0JBVkl1NUIsU0FLWHZPO2VBTVEsdUJBVGQ0TyxXQVFNRTtjQUNRLEdBRUxDO2VBQVEsV0FQWEY7O2VBTU8saUJBWjJCSCxNQVVsQ0ksa0JBSkFEO2NBU0osaUJBYkZELFdBUU1FLGtCQUpBRDtjQUlPLFNBTEkxaUQ7O3FCQWFyQm5MOzs7O01BR0EsR0FyQjhCd3REO1FBc0I1QixTQXJCRUcsY0FxQkY7OztVQUNFO1lBQU0sSUFFQ0ssUUFGRCxpQkFyQk5KLFdBb0JGbjBEO1lBQ1EsR0FFQ3UwRCxRQUFRO1lBRlQsU0FEUnYwRDs7Ozs7Z0JBdEI0Qit6RDtNQUZqQixXQTRCUDtJQXhGTixTQTBGRVMsU0FBT1YsU0FBU3RvQztNQUNsQjthQURrQkE7T0FDbEIsTUFBSXdvQztPQUFKLE1BQ0lTO09BREosS0FFSVA7TUFGSjtRQUljLHlCQUZWQSxTQUdnQiw4QkFORjFvQztRQU1FLE9BRGR5b0M7UUFHZSxxQ0FSWkgsU0FBU3RvQyxHQU1adW9DLFFBTEZDLE1BSUVDO01BOUJrQixXQWtDckI7SUFuR0gsU0FxR0VTLFFBQUt4d0QsRUFBRXNuQjtNQUNULFNBQVFtcEM7UTlDM0pYO1E4QzJKdUI7O2dCQUdYcFAsZUFBS2hyQixnQkFBTTdvQjtZQUNkLFdBTEN4TixFQUlFcWhELElBQUtockI7d0JBQU03b0I7O1VBRGQsU0FFMEI7TUFDakIsSUFBWGtqRCxTQUFXLGtCQU5OcHBDO01BTU0sT0FBWG9wQyxTQUNpQix1QkFQWnBwQztNQU9vQztRQUczQyxNQVZPQSxLQVVQLEtBRElsUCxxQkFDSjs7O1VBQ0U7c0JBQVUsaUJBRlJBLEVBQ0p0YztZQUNFLFNBREZBOzs7WUFHQSxTQVBFNDBELFNBT0YsVUFBcUIsdUJBYmRwcEM7UUFjSztZQUFUcUk7O1FBQVMsR0FSVitnQyxlQVFDL2dDO1FBQ0gsdUJBZk9ySTtRQWVQLE1BREdxSSxJQUVNO0lBckhYLFNBdUhNZ2hDLDBCQUEwQjN3RCxFQUFFc25CLEVBQUV4ckI7Ozs7VUFPcEI7V0FETnVsRDtXQUFLaHJCO1dBQU03b0I7V0FDTCxpQkFQZ0J4TixFQU10QnFoRCxJQUFLaHJCO1VBQ0M7Z0JBSUxPOzs7O2FBRVEsaUJBYmV0UCxLQUFFeHJCO1lBYUMsWUFGMUI4NkI7cUNBTFVwcEI7O1VBR2IsT0FUMEI4WjtVQU9sQixXQURLOVo7O1FBSmpCOztrQkFDVyxpQkFIbUI4WixLQUFFeHJCO0lBdkhwQyxTQTJJRTgwRCxtQkFBbUI1d0QsRUFBRXNuQjtNQUN2QixNQUR1QkEsS0FFUiwyQkFGUUE7TUFFUixPQUFYb3BDLFNBQ2lCLHVCQUhFcHBDO01BR3NCO2lCQUZ6Q2xQOztjQUlGdGM7VUFDRTtzQ0FOaUJrRSxFQUFFc25CLEVBS3JCeHJCLElBQ3dDLGlCQU5uQndyQixLQUtyQnhyQjtZQUNFLFNBREZBOzs7UUFHQSxhQU5FNDBELFNBTUYsVUFBcUIsdUJBUkFwcEM7UUFTVDtZQUFUcUk7O1FBQVMsR0FQVitnQyxTQXZDZ0IsTUE4Q2YvZ0M7UUFDSCx1QkFWcUJySTtRQVVyQixNQURHcUksSUFFTTtJQXRKWCxTQXdKRWtoQyxPQUFLN3dELEVBQUVzbkIsRUFBRWpYO01BQ1gsU0FBUW9nRCxVQUFVM3VELEVBQUVvRDtZQUFGNHJELE1BQUUxckQ7UUFDbEI7YUFEZ0IwckQ7WUFLRzthQURaelAsSUFKU3lQO2FBSUp6NkIsS0FKSXk2QjthQUlFdGpELEtBSkZzakQ7YUFLRyxrQkFOZDl3RCxFQUtFcWhELElBQUtockIsS0FKTWp4QjthQUFGMHJELElBSUV0akQ7YUFKQXBJOztVQUdkLE9BSGNBLE9BS2tCO01BQ3ZCLElBQVhzckQsU0FBVyxrQkFQTnBwQztNQU9NLE9BQVhvcEMsU0FDaUIsdUJBUlpwcEM7TUFRb0M7WUFFdkNsUCxFQVZHa1AsS0FXSHBpQixRQVhLbUwsV0FVTCtIOztjQUVKdGM7VUFDRTtxQkFGRW9KO1lBRU0sb0JBQVUsaUJBSGhCa1QsRUFFSnRjO1lBQ0UsU0FERkE7OztRQUdBLE9BUkU0MEQsU0FRbUIsdUJBZmRwcEM7UUFlc0MsU0FKekNwaUI7UUFNUTtZQUFUeXFCOztRQUFTLEdBVlYrZ0MsZUFVQy9nQztRQUNILHVCQWxCT3JJO1FBa0JQLE1BREdxSSxJQUVNO0lBM0tYLFNBb0xNb2hDOzs7O1VBRVU7Ozs7bUJBQVRydUM7O1FBREk7SUFyTFgsU0F3TEVzdUMsTUFBTTFwQztNQUNSO1lBRFFBO09BQ1I7T0FDRTs7bUJBQXFCbUMsRUFBRTNuQixHQUFlLGFBQWpCMm5CLEVBQWlCLGdCQUFmM25CLEdBQWtDO09BQy9DLHFCQUZSbXZEO09BRVEsS0FISjNwQztNQUlSO2lCQUNPeGxCO1VBQ0s7NkJBRExBO1dBRVUsc0JBSmJvdkQsTUFHSTl1RDtVQUNKLGlCQUpBOHVELE1BR0k5dUQ7VUFDSixRQUEwQjs7TUFIOUIsVUFKUWtsQixxQkFDSjJwQyxJQUVBQyxNQVN3QjtJQXBNNUIsU0F3TUVDLFNBQU9qbEM7TUFHVCxJQUFJa2xDLFNBSEtsbEM7TUFHVCxTQUVRM1EsSUFBSXpmLEVBQUV1MUQ7WUFBRmh2RCxNQUFFaXZEO1FBQVU7YUFBVkE7Z0JBS0pqUSxJQUxJaVEsVUFLQ2o3QixLQUxEaTdCLFVBS085akQsS0FMUDhqRDtZQU1lLGFBRG5CalEsSUFBS2hyQixxQjlDdlFsQixPOENrUVc5YSxJQUFJbFosSUFLU21MO1VBSGYsR0FGTW5MLFFBRlIrdUQsb0JBS087VUFDUzttQ0FOaEJBLFNBRVEvdUQ7V0FJUSxJQUpSQTs7V0FBRWl2RDttQkFNMEI7TUFSeEM7NEI5Q2hRSCxPOENrUVcvMUMsb0JBUUc7SUFyTlgsU0F1TkVpMkMsWUFBWS9uQztNQUFnQixrQkFBaEJBO01BQWdCLG9COUM1UWpDO004QzRRaUMsc0I5QzVRakMsT3NCbUNTN2Isc0J3QnlPa0M7SUF2TnhDLFNBeU5FNmpELGNBQWNob0M7TUFBZ0Isa0JBQWhCQTtNQUFnQixvQjlDOVFuQztNOEM4UW1DLHNCOUM5UW5DLE9zQm1DUzdiLHNCd0IyT29DO0lBek4xQztlQTZTTThqRCxVQUFVcHFDLEVBQUUrNUI7UUFDZCxTQURZLzVCO1FBQ1osdUJBRFlBLEtBQUUrNUIsV0FDb0M7ZUFFaER6dkIsSUFBSXRLLEVBQUUrNUIsSUFBSWhyQjtRQUNKO3FCQURGL08sRUFBRSs1QjtTQUUwQixVQUYxQkEsSUFBSWhyQixLQUVzQixpQkFGNUIvTyxLQUNGeHJCO1FBRUosaUJBSE13ckIsS0FDRnhyQixZQUNBNjFEO1FBQ0osT0FITXJxQztRQUNFLFNBREZBO1FBR04sWUFFMkMsU0FSekNvcUMsVUFHSXBxQyxPQUt1RDtlQWUzRHNMLE9BQU90TCxFQUFFKzVCO1FBQ0g7cUJBREMvNUIsRUFBRSs1QjtTQUVpQixxQkFGbkIvNUIsS0FiYXhyQjs7Ozs7Z0JBR1RpN0IsT0FBR3ZwQjtZQUNULG1CQURNdXBCLEVBVUZzcUI7Y0FSRixPQVFBLzVCO2NBUkE7a0NBRk85Wjt3QkFLQyxpQkFLUjhaLEtBYmF4ckIsWUFHTjBSOzs7VUFEWixTQWFrQztlQVFwQzhCLEtBQUtnWSxFQUFFKzVCO1FBQ0ssbUJBRFAvNUIsRUFBRSs1QixLQUNILHVCQURDLzVCO1FBQ0Q7Y0FFS3NxQyxZQUFTMTZCLFlBQVMyNkI7VUFDdEIsbUJBSkV4USxJQUdFdVEsSUFDZ0IsT0FEUDE2QjtVQUVoQixHQUZ5QjI2QjtnQkFJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1lBS2xCLG1CQVJGeFEsSUFPTXlRLElBQ2dCLE9BRFAzNkI7WUFFaEIsR0FGeUI0NkI7a0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO2NBS2xCLG1CQVpOMVEsSUFXVTJRLElBQ2dCLE9BRFBDO3dCQUFTQzs7O3NCQWQxQm43QixXQUFHVixjQUFNN29CO2tCQUNiLG1CQUVFNnpDLElBSEV0cUIsR0FDZSxPQURaVjs0QkFBTTdvQjs7Z0JBRGhCO1lBY2U7VUFKSjtRQUpKLGVBVWtEO2VBUTNEa25CLFNBQVNwTixFQUFFKzVCO1FBQ0MsbUJBREgvNUIsRUFBRSs1QixLQUNQLHVCQURLLzVCO1FBQ0w7Y0FFS3NxQyxZQUFTMTZCLFlBQVMyNkI7VUFDdEIsbUJBSk14USxJQUdGdVEsSUFDZ0IsVUFEUDE2QjtVQUVoQixHQUZ5QjI2QjtnQkFJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1lBS2xCLG1CQVJFeFEsSUFPRXlRLElBQ2dCLFVBRFAzNkI7WUFFaEIsR0FGeUI0NkI7a0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO2NBS2xCLG1CQVpGMVEsSUFXTTJRLElBQ2dCLFVBRFBDO3dCQUFTQzs7O3NCQWQxQm43QixXQUFHVixjQUFNN29CO2tCQUNiLG1CQUVNNnpDLElBSEZ0cUIsR0FDZSxVQURaVjs0QkFBTTdvQjs7Z0JBRGhCO1lBY2U7VUFKSjtRQUpKLFFBVTJEO2VBRXBFMmtELFNBQVM3cUMsRUFBRSs1QjtRQUNiLFNBQVErUTtVOUN0YWY7VThDc2FnQzs7a0JBR2RyN0IsYUFBUTNlLGFBQUc1SztjQUNmLG1CQURJdXBCLEVBSkVzcUIsS0FNQyxVQUZLanBDLEVBRUwsZUFGUTVLOzs7WUFEbEIsU0FJd0I7UUFDTCxtQkFSWjhaLEVBQUUrNUI7UUFRRSx1Q0FSSi81QixxQkFRNEI7ZUFVckMrcUMsUUFBUS9xQyxFQUFFKzVCLElBQUlockI7UUFDUjtxQkFERS9PLEVBQUUrNUI7U0FFSix5QkFGRS81QixLQUNOeHJCO2VBQ0E4Yzs7O2dCQVBTbWUsV0FBR3ZwQjtZQUNULHFCQURNdXBCLEVBS0RzcUIsZ0JBTEk3ekM7WUFFUCxXQUdHNnpDO1lBSEgsV0FHT2hyQjs7Ozs7WUFJZCxpQkFKUS9PLEtBQ054ckIsZUFEUXVsRCxJQUFJaHJCLEtBRVp6ZDtZQUVGLE9BSlEwTztZQUlSLFNBSlFBO1lBSVIsUUFFMkMsZ0JBM0YzQ29xQyxVQXFGUXBxQztZQUlSOzs7VUFyQnVCLFlBd0J0QjtlQUVEcUwsSUFBSXJMLEVBQUUrNUI7UUFNYzt3QkFOaEIvNUIsRUFBRSs1QjtTQU1NLHlCQU5SLzVCOztRQUNrQjs7WUFJcEIsSUFET3lQLFdBQUd2cEIsY0FDVixxQkFET3VwQixFQUpIc3FCO1lBS0osUUFGQTtZQUVBLFVBRFU3ekM7O1VBRFYsU0FHa0M7ZUFFcENpb0IsUUFBUXZKLElBQUlwd0I7UUFDZDs7bUJBQVMscUNBRENvd0IsSUFDSzZLLEVBQUU3MkIsRUFBa0I7aUJBRHJCcEUsRUFDdUI7ZUFFbkN3MkQsWUFBWXBtQyxJQUFJcHdCO1FBQ2xCOzttQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtpQkFEckJwRSxFQUN1QjtlQUV2QzQ1QixPQUFPNTVCLEdBQ0MsSUFBTm93QixJQUFNLGVBQ1YsWUFESUEsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FwSEQraUM7Y0EvUUpHO2NBTUFDO2NBMkJBSTtjQXNQSTc5QjtjQW9CQWdCO2NBVUF0akI7Y0FvQkFvbEI7Y0FjQXk5QjtjQWtCQUU7Y0FTQTEvQjtjQXRTSjY5QjtjQXNDQUk7Y0FhQUM7Y0E1RkFuQjtjQTRIQXNCO2NBZ0JBRztjQWVBSztjQUVBQztjQTBMSWg4QjtjQUdBNjhCO2NBR0E1OEI7SUF6Wk47TTlDckRILEk4Q2llYXJzQjtlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksdUJBQUpBLEVBQVk7OzZCQUQ5QjBJLE1BQ0E2TztPQWpLUjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUNBc3REO09BQ0F4bkQ7T0FDQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUNBeThDO09BQ0FDO09BQ0FoOEI7T0FDQTY4Qjs7ZUFnSkk3bUQsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0FuSkZvbUMsWUFrSk1wbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQW5LSnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FDQXN0RDtjQUNBeG5EO2NBQ0FzQztjQUNBc2xEO2NBQ0FqOEM7Y0FDQXk4QztjQUNBQztjQUNBaDhCO2NBQ0E2OEI7Y0FpSkk1OEI7SUFoYk4sU0E2YkV3cEIsT0FBS3YrQyxHQUFJLDBCQUFKQSxFQUFnQztJQTdidkMsU0E4YkU4eEQsV0FBVzkzQyxHQUFHQyxHQUFHamEsR0FBSSxpQkFBVmdhLEdBQUdDLEtBQUdqYSxFQUErQjtJQTlibEQsU0ErYkUreEQsWUFBWTFHLEtBQUtyckQsR0FBSSx3QkFBVHFyRCxLQUFLcnJELEVBQW1DO0lBL2J0RCxTQWljRSt3RCxVQUFVcHFDLEVBQUUrNUI7TUFDZCxZQURZLzVCO2VBRVAsaUJBRk9BLEtBQUUrNUIsUUFBRi81QjtlQUdQLDJDQUFvRDtJQXBjekQsU0FzY0VxckMsTUFBSXJyQyxFQUFFKzVCLElBQUlockI7TUFDSjttQkFERi9PLEVBQUUrNUI7T0FFMEIsVUFGMUJBLElBQUlockIsS0FFc0IsaUJBRjVCL08sS0FDRnhyQjtNQUVKLGlCQUhNd3JCLEtBQ0Z4ckIsWUFDQTYxRDtNQUNKLE9BSE1ycUM7TUFDRSxTQURGQTtNQUdOLFlBRTJDLFNBVnpDb3FDLFVBS0lwcUMsT0FLdUQ7SUEzYzdELFNBMGRFc0wsT0FBT3RMLEVBQUUrNUI7TUFDSCxnQkFEQy81QixFQUFFKzVCLEtBRWlCLHFCQUZuQi81QixLQWJheHJCOzs7Y0FHVGk3QixPQUFHdnBCO1VBQ1Qsc0JBRE11cEIsRUFVRnNxQjtZQVJGLE9BUUEvNUI7WUFSQTtnQ0FGTzlaO3NCQUtDLGlCQUtSOFosS0FiYXhyQixZQUdOMFI7OztRQURaLFNBYWtDO0lBNWR0QyxTQW9lRW9sRCxPQUFLdHJDLEVBQUUrNUI7TUFDSyxtQkFEUC81QixFQUFFKzVCLEtBQ0gsdUJBREMvNUI7TUFDRDtZQUVLc3FDLFlBQVMxNkIsWUFBUzI2QjtRQUN0QixzQkFKRXhRLElBR0V1USxJQUNvQixPQURYMTZCO1FBRWhCLEdBRnlCMjZCO2NBSWRDLEdBSmNELFNBSUwxNkIsR0FKSzA2QixTQUlJRSxNQUpKRjtVQUtsQixzQkFSRnhRLElBT015USxJQUNvQixPQURYMzZCO1VBRWhCLEdBRnlCNDZCO2dCQUlkQyxHQUpjRCxTQUlMRSxHQUpLRixTQUlJRyxNQUpKSDtZQUtsQixzQkFaTjFRLElBV1UyUSxJQUNvQixPQURYQztzQkFBU0M7OztvQkFkMUJuN0IsV0FBR1YsY0FBTTdvQjtnQkFDYixzQkFFRTZ6QyxJQUhFdHFCLEdBQ21CLE9BRGhCVjswQkFBTTdvQjs7Y0FEaEI7VUFjZTtRQUpKO01BSkosZUFVc0Q7SUFoZmpFLFNBd2ZFcWxELFdBQVN2ckMsRUFBRSs1QjtNQUNDLG1CQURILzVCLEVBQUUrNUIsS0FDUCx1QkFESy81QjtNQUNMO1lBRUtzcUMsWUFBUzE2QixZQUFTMjZCO1FBQ3RCLHNCQUpNeFEsSUFHRnVRLElBQ29CLFVBRFgxNkI7UUFFaEIsR0FGeUIyNkI7Y0FJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1VBS2xCLHNCQVJFeFEsSUFPRXlRLElBQ29CLFVBRFgzNkI7VUFFaEIsR0FGeUI0NkI7Z0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO1lBS2xCLHNCQVpGMVEsSUFXTTJRLElBQ29CLFVBRFhDO3NCQUFTQzs7O29CQWQxQm43QixXQUFHVixjQUFNN29CO2dCQUNiLHNCQUVNNnpDLElBSEZ0cUIsR0FDbUIsVUFEaEJWOzBCQUFNN29COztjQURoQjtVQWNlO1FBSko7TUFKSixRQVUrRDtJQXBnQjFFLFNBc2dCRXNsRCxXQUFTeHJDLEVBQUUrNUI7TUFDYixTQUFRK1E7UTlDNWpCWDtROEM0akI0Qjs7Z0JBR2RyN0IsYUFBR1YsZ0JBQU03b0I7WUFDYixzQkFESXVwQixFQUpFc3FCLEtBTUksVUFGSGhyQixLQUVHLGVBRkc3b0I7OztVQURoQixTQUl3QjtNQUNMLG1CQVJaOFosRUFBRSs1QjtNQVFFLHVDQVJKLzVCLHFCQVE0QjtJQTlnQnZDLFNBd2hCRStxQyxRQUFRL3FDLEVBQUUrNUIsSUFBSWhyQjtNQUNSO21CQURFL08sRUFBRSs1QjtPQUVKLHlCQUZFLzVCLEtBQ054ckI7YUFDQThjOzs7Y0FQU21lLFdBQUd2cEI7VUFDVCxzQkFETXVwQixFQUtEc3FCLGdCQUxJN3pDO1VBRVAsV0FHRzZ6QztVQUhILFdBR09ockI7Ozs7O1VBSWQsaUJBSlEvTyxLQUNOeHJCLGVBRFF1bEQsSUFBSWhyQixLQUVaemQ7VUFFRixPQUpRME87VUFJUixTQUpRQTtVQUlSLFFBRTJDLGdCQTdGM0NvcUMsVUF1RlFwcUM7VUFJUjs7O1FBckJ1QixZQXdCdEI7SUEvaEJILFNBaWlCRXlyQyxNQUFJenJDLEVBQUUrNUI7TUFNYztzQkFOaEIvNUIsRUFBRSs1QjtPQU1NLHlCQU5SLzVCOztNQUNrQjs7VUFJcEIsSUFET3lQLFdBQUd2cEIsY0FDVix3QkFET3VwQixFQUpIc3FCO1VBS0osUUFGQTtVQUVBLFVBRFU3ekM7O1FBRFYsU0FHa0M7SUF2aUJ0QyxTQXlpQkV3bEQsVUFBUTltQyxJQUFJcHdCO01BQ2Q7O2lCQUFTLHVDQURDb3dCLElBQ0s2SyxFQUFFNzJCLEVBQWtCO2VBRHJCcEUsRUFDdUI7SUExaUJyQyxTQTRpQkV3MkQsWUFBWXBtQyxJQUFJcHdCO01BQ2xCOztpQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtlQURyQnBFLEVBQ3VCO0lBN2lCekMsU0EraUJFbTNELFNBQU9uM0QsR0FDQyxJQUFOb3dCLElBQU0sZUFDVixZQURJQSxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEO0lBbGpCSCxTQW9qQkVnbkMsUUFBVTVtQyxJQUFzQmhGO01BQ2xDLEdBRFlnRixJQUFTLFFBQVRBLGNBQVNDLGFBQVQ0aUMsT0FsakJWUDtNQW1qQk0sSUFBSnB1RCxFQUFJLGlCQUQwQjhtQjtNQUMxQixHQURJNm5DO09BR0s7MEJBaGpCZko7UUFnakJlLGtCQWhqQmZBLHFCMUJqQ0F4aUQsaUIwQmlDQXdpRDtRQStpQkUvQyxLQUNhOztPQUNWLElBRkhBLFVBRjhCMWtDO01BQzFCO09BS1IsVUFOa0NBLGtCQUM5QjltQjtPQU9LLE9BUnlCOG1CLEtBUXpCLGVBUEw5bUIsS0FDQXdyRDtPQU1LLEtBRkxuN0I7T0FFSyxLQVJ5QnZKO09BUXpCO01BSVQ7dUI5Q3JuQkgsTzhDc2ZLb3FDLFVBeUhFN2dDO01BTUosT0FOSUEsR0FPRjtJQWprQkY7OztPQXdTTW8rQjtPQS9RSkc7T0FNQUM7T0EyQkFJO09BNFlBa0Q7T0E4QkFDO09Bb0JBQztPQWNBQztPQTJCQUM7T0F2RUFuZ0M7T0E4REF5L0I7T0FuYkE3QjtPQXNDQUk7T0FhQUM7T0E1RkFuQjtPQXhEQWI7T0FDQUM7T0EraUJBb0U7T0E1WEFsQztPQWdCQUc7T0FlQUs7T0FFQUM7T0FnVkF1QjtPQUdBVjtPQUdBVzs7O09BbEhBL1Q7T0FFQXdUO09BREFEOztJQTliRjthQ2dESVUsWUEvRUsvd0Q7TUFDVCxjQURTQSxNQUNULFVBRFNBO01BRVA7TUFDRixnQ0FIU0EsRUFHRDthQUtOZ3hELFNBQU96eUQsR0FBSSxPQUFKQSxvQkFBNEM7YUFFbkQweUQsMEJBQXdCcnFELEVBQUU0QyxFQUFFQztNQUM5QixjQUQ0QkQsTUFDNUIsVUFENEJBLElBQ04sU0FESTVDLFlBRXhCOzhCQUY0QjZDLFNBRVo7YUFJaEJ5bkQsTUFBSXRxRCxFQUFFNEMsRUFBRWpMO01BQ1YsMEJBRE1xSSxFQUFFNEM7TUFDUixHQURVakwsR0FJRSxJQUFMa1osSUFKR2xaLEtBSUUseUJBSk5xSSxFQUFFNEMsRUFJRGlPO01BREcsMkJBSEo3USxFQUFFNEMsRUFJYzthQUdwQjJuRCxNQUFJdnFELEVBQUU0QztNQUNSLDBCQURNNUMsRUFBRTRDO01BRVIsNkJBRk01QyxFQUFFNEMsRUFFRDthQUdMNG5ELFNBQVN4cUQsRUFBRTRDO01BQ2IsMEJBRFc1QyxFQUFFNEM7TUFFYixrQ0FGVzVDLEVBQUU0QyxFQUVEO2FBR1Y2bkQsUUFBTXpxRCxFQUFFNEM7TUFDViwwQkFEUTVDLEVBQUU0QztNQUVWLCtCQUZRNUMsRUFBRTRDLEVBRUQ7YUFLUDhuRCxPQUFLcHFELEdBQUc4QyxHQUFHN0MsR0FBRzhDLEdBQUdqSztNQUVFOzs7UUFGRkE7Ozs7UUFBVGdLOzs7VUFDaUIsU0FEcEI5QyxNQUFZbEgsU0FBVGdLOzs7O1FBQU1DOzs7VUFFSyxTQUZSOUMsTUFBTW5ILFNBQUhpSztRQUlYO29CQUpjaks7U0FJZCxVQUFlLHVCQUpia0gsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO1FBSW1CO01BRGpDLGlDQUNpQzthQUVwQ3V4RCxPQUFLQyxHQUFHaHdELElBQUlDLElBQUlsRDtNQUNhLFFBRHJCaUQsWUFBSUMsV0FDaUIsU0FEeEIrdkQsTUFBTy92RCxXQUFKRDtRQUdMLFVBSEtBLE1BQUlDO1FBR1QsYUFIS0Q7Y0FHTDlILEVBSEs4SDtVQUtOO2tCQUxHZ3dELEdBR0Y5M0QsRUFIYTZFO1lBS2QsU0FGQzdFOzs7O01BREEsd0NBS0Y7O01BMkJlLElBQWQrM0QsWUFBYztlQVlkQyxVQUFVaG5ELEVBQUV3YSxHQUFJLGdCQUFKQSxlQUFGeGEsZ0JBQWlEO01BWjdDLElBY2RpNEM7TUFkYyxTQWlCZHQ1QyxPQUFPK21EO1FBQ1Q7bUJBRFNBO1NBRVQsd0JBREl1QjtRQUdNOytCQUZOQyxLQW5CRkg7Z0JBc0JTLGVBSFBHO2dCQUxGalA7O2tCQVlEO01BMUJlLFNBNEJkL3NCLE1BQU1sckI7UUFDUixTQURRQSx3QkFDUjs7O1VBQ0U7NkJBRk1BLEtBQ1JoUixZQTdCRSszRDtZQStCQSxpQkFITS9tRCxLQUNSaFI7WUFFRSxTQUZGQTs7O1FBSUEsT0FuQkVpcEQ7UUFtQkY7Z0JBQ2U7TUFsQ0MsU0FxQ2QzN0MsS0FBS3BKLEVBQUU4TSxFQUFFdUQ7UUFDWCxTQURTdkQsS0FDVDtRQU1pQjswQkFOS2hMLEVBQUVvTjt1QkFBSjdNLE1BQUk2QzttQkFDdEI7cUJBQVEsWUFEWXBELE1BQUZPLElBQ0ksT0FEQTZDO3FCQUVoQixnQkFGY3BELEVBQUZPO3FCQUVaO3VCQUNNOzt3QkFBb0Isa0JBSjNCckMsRUFJRUUsRUFIZWdGO3dCQUdVLElBSGQ3Qzs7d0JBQUk2Qzs7cUJBRWhCLElBRUksSUFKUTdDOzs7aUJBRFRnTyxLQU9rQztNQTVDN0IsU0ErQ2QvTSxLQUFLdEQsRUFBRThNO1FBQ1QsU0FEU0EsS0FDVDtRQU1XOzBCQU5XaEw7bUIvQ3RKM0IsSStDc0p5Qk87bUJBQ2xCO3FCQUFRLFlBRFlQLE1BQUZPLElBQ0k7cUJBQ2hCLGdCQUZjUCxFQUFGTztxQkFFWjt1QkFDTSxJQUFMbkM7dUJBQUssV0FKUEYsRUFJRUU7dUJBQUssUUFITW1DOztxQkFFWixJQUVJLElBSlFBOztzQkFNYztNQXREbEIsU0FtRVY0eEQsYUFBYW40RCxFQUFFZ0csRUFBRW9EO1lBQUo3QyxNQUFJK0M7UUFDdkI7VUFBUSxZQURhdEQsTUFBRk8sSUFDRyxPQURDK0M7VUFFVTt3QkFGWnRELEVBQUZPO1dBQUk2TTtXQUFKd087O1dBQUl0WTttQkFFbUM7TUFyRTFDLFNBd0VkODBCLE1BQU1wdEI7UUFDUixnQkFEUUEsS0FDUjtRQUFpQjtxQy9DL0t0QixPK0N5S1dtbkQ7O3NCQU1xQztNQXpFM0IsU0FvSWRDLFFBQVFwbkQsRUFBRXFuRCxPQUFPLzdDLEVBQUVrUCxFQUFFOHNDO1FBQ1Y7bUNBREh0bkQsS0FBYXNuRDtTQUVWLHdCQUZIdG5ELEtBQWFzbkQ7U0FHZCxZQUZMQztTQUdTaDBDO1FBQ1g7YUFGRW15QyxNQUNTbnlDO1lBR1A7YUFERWswQztjQUNGLFlBSkYvQjtZQUlFLEdBREUrQixTQUhKL0IsR0FNb0I7WUFGbEI7YUFHYyx3QkFKWitCO2FBS1kseUJBTFpBO1lBTUosT0FYQUYsV0FTSUcsY0FQSmhDO1lBVUEsT0FYQThCLFNBU0lHLFlBUkpqQztZQVdBLFdBZFEyQixPQVVKSyxZQVBKaEMsR0FIZXA2QztZQWVmLGlCQUpJcThDLFVBUkpqQyxjQUhpQmxyQztZQWdCakIsaUJBaEJNeGEsS0FBYXNuRCxvQkFVZkk7WUFPSixpQkFqQk0xbkQsS0FBYXNuRCxvQkFXZks7WUFKRixJQVVGLEtBZEFqQyxNQUhNMWxELFNBaUJOLFVBakJNQSxPQU1GeW5EO1lBWXFDO3FCQWxCbkN6bkQ7a0JBb0JKZ1M7Y0FBNEI7Z0JBeEVsQztzQkFvRFVoUztpQkFwREcsd0JBb0RIQTtpQkFwREcsS0FvREhBO2lCQW5ESSx5QkFtREpBO2lCQWxEQSxXQUZONmtEO2lCQUhVLFlBQUpyeEQ7aUJBT0Msb0JBSlBxeEQ7Z0JBSU8sR0FBUGlELFFBREFEO2tCQWFNLGlCQWhCTmhELGdCQU1XdHZELE1BQUUrTjtrQkFDYjt1QkFKQXVrRCxZQUdhdmtEO3NCQUVSLFdBUkx1aEQsT0FNV3R2RDt3QkFFYyxRQUZkQTtzQkFHRCxXQVRWc3ZELE9BTWF2aEQ7d0JBSVQsT0FWSnVoRCxPQU1hdmhELEVBTmJ1aEQsT0FNV3R2RDt3QkFLUSwwQkFWbkJxeUQsUUFLYXRrRDt3QkFLVCxpQkFWSnNrRCxRQUtXcnlEO3dCQUtRLElBQWYsSUFMUytOLFVBS1QsSUFMTy9OLG9CQUFFK047O3NCQU9GLFFBUEVBOzs2QkFIYnVrRDtzQkFjbUIsU0FtQ2I3bkQ7c0JBbENOLGlCQWtDTUEsdUJBcElSK21EO3NCQWlHcUIsU0FtQ2IvbUQ7c0JBakNOLGlCQWlDTUE7O3NCQS9CVSxJQUFaZ29ELFVBQVksWUFsQmhCSDtzQkFtQkEsT0F0QkFoRCxTQXFCSW1ELFlBbEJKSDtzQkFrQmdCLFNBK0JWN25EO3NCQTdCTixpQkE2Qk1BLHVCQS9CRmdvRDtzQkFBWSxJQUdNLFdBdkJ0QkosVUFFQUMsVUFxQnNCLEtBNEJoQjduRDtzQkE1Qk4saUJBNEJNQTtvQkExQlIsU0EwQlFBLE9BdkRBeE0sTUE2QlIsVUF2QkVxMEQsWUFpRE03bkQ7b0JBMUJxQyxlQTBCckNBOztnQkF4QlYsZ0JBd0JVQTtnQkFwRFYsU0F3RU1nUzs7O1lBYkEsV0FQSWhTO1lBc0JOO2NBMUNKO21CQW9CVUE7ZUF4REksbUJBQUpzRTt1QkFxQ053YjtnQkFFUyxnQkFGVEEsUUF2REosS0EwRVU5ZixLQTFFVjtnQkFNWTsyQkFOVXNELEVBMERQNGtEO29CL0MxTnBCLEkrQ2dLeUIzeUQ7b0JBQ2xCO3NCQUFRLFlBeURLMnlELE9BMURLM3lELElBQ0k7c0JBQ2hCLGtCQXdETzJ5RCxHQTFESzN5RDtzQkFFWjt3QkFDUTs2Q0F1RU55SyxLQTFFWXNEO3lCQTJEbEI7bUNBM0RnQnRVO3FDQTJEWnE0RCxPQUFPOXdDLEdBQUc4eEMsVUFBTyxjQURWSCxHQTFES2w1RCxFQTJETHVuQixHQUFHOHhDLEtBQXlCO21DQUFuQ2hCO3lCQUFKLGdCQTNEZ0I5eEQ7eUJBNERSLG1CQUZNNHlELEdBMURFNXlEO3dCQTZEVyxRQUp6QjB5RCxLQUVFWixTQUNBN3NDLEVBQ3VCLFVBSnpCeXRDLEtBR0V6dEM7d0JBekRRLElBSEk1Sjs7c0JBRVosSUFFSyxJQUpPcmI7OztnQkEwRVZ5SyxPQWpCSmlvRDtnQkFpQklqb0QsT0FqQkppb0Q7Z0JBaUJJam9ELE9BakJKaW9EO2dCQWlCSWpvRCxPQWpCSmlvRDtnQkFpQklqb0QscUJBakJKaW9EOztjQVlHLE9sQ2pJRHp6RDtja0NpSUM7O1lBNEJFO1VBQUcsV0F0QlYreUQsU0FHU2gwQyxNQW1CcUIsUUFuQnJCQTtVQXNCVCxXQTFCUTh6QyxPQUNSRSxTQUdTaDBDLElBSk1qSTtVQTJCZixpQkF6QkFrOEMsT0FFU2owQyxnQkFKUWlIO1VBMkJqQixTQUdFO01BbEtVLFNBcUtkc0ssSUFBSTlrQixFQUFFc0w7UUFDQSxJQUFKa1AsRUFBSSxnQkFEQWxQO1FBRWlCLGVBRm5CdEwsRUFyT053bUQsU0FxT1FsN0MsR0FDSmtQLEVBQ3FCLFVBRm5CeGEsRUFDRndhLEdBQ29DO01Bdkt4QixTQTBLZDh0QyxRQUFRdG9ELEVBQUVzTCxFQUFFaTlDO1FBQ047MkJBRElqOUM7U0FFQSxnQkFGRnRMLEVBQ053YTtTQUVTLHdCQUhIeGEsS0FFTnNuRDtTQUVTLHdCQUpIdG5ELEtBRU5zbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLLGtCQVBKdTVELFdBQ1YvdEMsRUFDQThzQztVQU1VLEdBUFY5c0MsTUFPVSxpQkFKVmd0QyxPQUVTeDREO1lBR0gsbUJBTk42MUQsT0FHUzcxRDtZQUdIO2tCQUNDb0U7Y0FBTyxtQkFBUEEsRUFWQ2tZO2dCQVdVLGtCQVJsQnU1QyxPQUdTNzFEO2dCQUtTLFlBQ0EsSUFBTHFOLGVBQUssT0FBTEE7Z0JBREssSUFFRixJQVBQck47O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZUDtNQTVMVSxTQStMZGdvQixNQUFNaFgsRUFBRXNMO1FBQ1Y7aUJBRFF0TDtpQkFBRXNMOzBCQUNPa1AsRUFBRThzQyxPQUFTLFFBRHBCdG5ELEVBL1BSd21ELFNBK1BVbDdDLEdBQ09rUCxFQUFFOHNDLE9BQVMsT0FEbEJoOEMsQ0FDbUQsRUFBQztNQWhNOUMsU0FtTWQ5SSxLQUFLeEMsRUFBRXNMO1FBQUksZUFBTnRMLEVBQUVzTCxXQUFxQmtQLEVBQUc4c0MsT0FBVSxlQUFlLEVBQUM7TUFuTTNDLFNBcU1kMS9CLFNBQVM1bkIsRUFBRXNMO1FBQ0w7MkJBREtBO1NBRUQsZ0JBRkR0TCxFQUNQd2E7U0FFUyx3QkFIRnhhLEtBRVBzbkQ7U0FFUyx3QkFKRnRuRCxLQUVQc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7UUFDWDthQUZFMDJELE1BQ1MxMkQsRUFDSztVQUNKLEdBUFZ3ckIsTUFPVSxpQkFKVmd0QyxPQUVTeDREO1lBR0gsbUJBTk42MUQsT0FHUzcxRDtZQUdIO2tCQUNDb0U7Y0FBTyxtQkFBUEEsRUFWRWtZO2dCQVdTLElBQ1ZqUCxJQURVLE1BUmxCd29ELE9BR1M3MUQ7Z0JBS1MsR0FDVnFOLElBQWUsT0FBZkE7Z0JBRFUsSUFFRixJQVBQck47O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZUDtNQXZOVSxTQTBOZHc1RCxZQUFZeG9ELEVBQUVzTCxFQUFFbTlDLFFBQVFGO1FBQ2xCOzJCQURRajlDO1NBRUosZ0JBRkV0TCxFQUNWd2E7U0FFUyx3QkFIQ3hhLEtBRVZzbkQ7U0FFUyx3QkFKQ3RuRCxLQUVWc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7UUFDWDthQUZFMDJELE1BQ1MxMkQsRUFDSyxPQVBRdTVEO1VBUVosR0FQVi90QyxNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZLa1ksR0FVaUIsa0JBVmZtOUMsUUFHZDVELE9BR1M3MUQ7WUFHSCxJQUVDLElBTEVBOztVQU1GLFFBTkVBO21CQVFQO01BeE9VLFNBMk9kODJCLE9BQU85bEIsRUFBRXNMO1FBQUk7MkJBQU50TCxFQUFFc0wsV0FBeUI4eUIsRUFBRXB2QyxHQUFLLGFBQVBvdkMsRUFBRXB2QyxJQUFpQixPQUFJO01BM08zQyxTQThPZDYyQixJQUFJN2xCLEVBQUVzTDtRQUFJLDhCQUFOdEwsRUFBRXNMLFdBQXlCOHlCLEVBQUdwdkMsR0FBTSxRQUFJLE9BQU87TUE5T3JDLFNBaVBkcTJELFNBQVNybEQsRUFBRXNMO1FBQ0w7MkJBREtBO1NBRUQsZ0JBRkR0TCxFQUNQd2E7U0FFUyx3QkFIRnhhLEtBRVBzbkQ7U0FFUyx3QkFKRnRuRCxLQUVQc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7U0FBRW9KO1FBQ2I7YUFGRXN0RCxNQUNTMTJELEVBQ0ssT0FESG9KO1VBRUQsR0FQVm9pQixNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZFa1k7Z0JBV1Msa0JBUmxCdTVDLE9BR1M3MUQ7Z0JBS1M7a0JBQ0E7OzZCQUFMcU4sSUFORmpFO21CQU1PLElBTlRwSjs7bUJBQUVvSjs7Z0JBS08sSUFFRixJQVBQcEo7O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZSjtNQW5RTyxTQXNRZGsxRCxNQUFNbGtEO1FBQ1IsUUFEUUEsZ0JBRUcsV0FoVlhzbUQsU0E4VVF0bUQ7UUFHUixzQkFESTBvRDtRQURKO1NBRUE7U0FDYTswQy9DaFhsQiw2QitDOFdTQTtTQUVTLEtBSFQzeEQ7U0FJMkMsS0FKM0NBO1NBSTJDLHNCQUgzQzJ4RDtTQUc2QixzQkFIN0JBO1NBR21CLHNCQUhuQkE7UUFHRSxVQUpGM3hELElBSUUsTUFMRWlKLEdBSUoyb0Qsc0JBQ3dEO01BM1E1QztjQWlCZGhxRDtjQVdBdXNCO2NBbUtBbFU7Y0ExQkE4TjtjQXNFQWdCO2NBeENBdGpCO2NBRUFvbEI7Y0E0Q0F5OUI7Y0FIQXgvQjtjQS9MQXJ2QjtjQVZBOEY7Y0FtQ0E4d0I7Y0E4TEE4MkI7Ozs7T0F2UUFtQztPQXZFRkM7T0FRQUU7T0FPQUM7T0FLQUM7T0FLQUM7T0FhQUU7T0FOQUQ7OzthQ3ZDQWdDLEtBQUcvMEQsR0FBSSxPQUFKQSxDQUFLOzs7S0E4ckJKZzRDO0tBNXFCRmdkO2FBaUxGQyxXQUFXenBDLE1BQU0wcEM7TUFDbkIsWUFEYTFwQyxZQUFNMHBDLGFBQ25CLFdBRG1CQSxNQUFOMXBDLFVBRWlCO1FBNEI1QjJwQzthQUdBQyxpQkFBaUI1cEMsTUFBTTNyQjtNQUFJLGtCQUFWMnJCLFVBQU0zckIsSUFBSSxzQkFBSkEsR0FBNkM7YUFDcEV3MUQsa0JBQWtCN3BDLE9BQVEsa0JBQVJBLFlBQStCO2FBS2pEOHBDLGVBQWU5cEMsTUFBTXdzQixLQUFLdWQ7TUFDNUIsV0FEaUIvcEMsV0FBTXdzQjtNQUV2QixpQkFGaUJ4c0IsTUFBVytwQztNQUU1QjtjQUM2QjthQUczQkMsY0FBY2hxQyxNQUFNM3JCO01BQ25CLDhCQURtQkE7TUFDbkIsWUFBYSxlQURBMnJCLE1BQ0Esc0JBRE0zckIsVUFDa0M7YUFHdEQ0MUQsZUFBZWpxQyxZQUE4QnNVO1VBQVB1RCxlQUFSekcsZ0JBQVIwRztNQUN4QixjQURpQjlYLE1BQU84WDtNQUV4QixrQkFGaUI5WDtNQUVqQjs7ZUFGaUJBLFdBQThCc1UsYUFBZmxEO09BTWQsa0JBTkRwUixTQUlidXJCO01BRWMsWUFBZDJlO01BQWMsV0FORGxxQztNQWJZLFdBYVpBO2FBSmZncUMsY0FJZWhxQyxNQUF1QjZYO2FBY3RDc3lCLFdBQVducUMsTUFBTXNVLE9BQVEsc0JBQWR0VSxXQUFNc1UsTUFBOEM7YUFHL0Q4MUIsZ0JBQWdCcHFDO1VBQXNCNlgsZUFBUHZELGVBQVJ3RDtNQUN6QixjQURrQjlYLE1BQU84WDtNQUN6QixXQURrQjlYLFdBQWVzVTtNQS9CSixXQStCWHRVLFVBQWVzVTthQXJCL0IwMUIsY0FxQmdCaHFDLE1BQXNCNlg7YUFvQ3RDd3lCLGdCQUFnQnJxQyxNQUFNc3FDO01oRGhVM0I7OztVZ0Q0VmlCLG9CQTVCSXRxQztVQTRCSjs7O2FBRUl1cUM7YUFDTkM7dUJBQVFyMkQsRUFFWnMyRDtnQmhEaldYLEdnRGlXV0E7c0JBQUt4MEQsRUFBTHcwRDtrQkFBbUIscUJBRlB0MkQsRUFFWkssTUFGWUwsRUFFWnMyRCxTQUFnRCxRQUZwQ3QyRCxFQUVQOEI7Z0JBREMsVUFETTlCO1lBR1Isa0JBbENNNnJCLHdCQThCQXVxQztZQUlOO1VBTEE7Z0JBVlYsUUFuQmdCdnFDLFVBbUJoQjtnQkFNQSxRQXpCZ0JBLFVBeUJoQjs7VUFpQ1ksb0JBMURJQTtVQTBESjttQ0FFSHluQjttQkFuR1QwaUIsV0F1Q2dCbnFDLE1BNERQeW5CO1VBREMseUJBM0RNem5COztVQWdFaEIsU0FoRWdCQTtVQWdFaEI7WUE5RUkscUJBY1lBO1lBZFo7cUNBRUd3c0IsZ0JBQU1qdEM7Y0FZR3lnQix3QkFaSHpnQjtjQVlHeWdCLHNCQVpUd3NCOztZQURDO1VBZ0hQOztVQUFZLG9CQW5HR3hzQjtVQW1HSDtZQUdWLHdCQUFhLGtCQXRHQUEsVUFxR1IwcUM7WUFDUSx3QkF0R0ExcUMsTUFzR1QycUM7VUFGSTs7O2dCQWpHWCxJQURRdDJELFdBQ1Isc0JBSGdCMnJCLE1BQU1zcUMsT0FFZGoyRDs7VUFtRUk7V0FGS3UyRDtXQUFOQztXQUNDQyxJQURLRjtXQUNiOXlCLE9BRGE4eUI7V0FFTCxnQkFyRUk1cUM7VUFxRUo7bUNBRU8rd0IsbUJBQVZnYTs7cUJBa0JNLHVCQXpGQy9xQyxNQW1FTDZxQztxQkFxQkksc0JBeEZDN3FDLE1BbUVDNHFDLE9BSUU3WjtxQkFlSCxzQkF0RkEvd0IsTUFtRUM0cUMsT0FJRTdaOztlQUdmLE9BMUVZL3dCLFlBQU1zcUMsU0EwRWxCLHNCQU5BeHlCO3dCQU9LLGVBM0VPOVgsTUFtRUM0cUMsT0FJRTdaO3dCQUtWLGdCQTVFTy93QixNQW1FTDZxQzs7ZUFZUCxPQS9FWTdxQzt3QkErRWlCLGdCQS9FakJBLE1BbUVMNnFDO3dCQW5FSzdxQyxZQUFNc3FDLFNBZ0ZsQixzQkFaQXh5QjswQkFhTyxlQWpGSzlYLE1BbUVDNHFDLE9BSUU3Wjs0QkF2RUgvd0IsV0F1RUcrd0IsZUFIUCtaLFdBcEVJOXFDOzRCQW9GUCxlQXBGT0EsTUFtRUM0cUMsT0FJRTdaOzRCQWNWLGdCQXJGTy93QixNQW1FTDZxQztzQkFvQkksdUJBdkZDN3FDLE1BbUVMNnFDO1VBR0Q7O1VBL0JFO1dBRkVHO1dBQUg3MkQ7V0FDUDgyRCxnQkF0Q1lqckM7V0F1Q0osaUJBdkNJQTtVQXVDSjtxQ0FFSWtyQzs7Y0FLViwwQkFMVUE7Y0FLSzs7c0JBQ0g3N0MsZ0JBQVIrN0M7d0JBVE5ILG1CQVNNRyxtQkFBUS83QzsyQkFBUis3Qzs7MEJBRkpEO29CQUhBRTs7O3FCQUpGSjtZQWFGLElBQUk3NUIsT0FUQWk2QixNQUpGSjtZQWFGLFlBQUk3NUI7cUJBRUMsZ0JBckRTcFIsZ0JBbURWb1IsU0FkS2o5QjtxQkFpQko7dUJBdERTNnJCLGdCQTBDVnFyQyxNQUxRTCxrQkFyQ0VockM7VUF3Q047OztXQW5DSzF2QjtXQUFMZzdEO1dBQ05DLGtCQU5ZdnJDO3dCQU1adXJDO1lBL0JBLGtCQXlCWXZyQztZQXpCWjttQ0FFYXNVLGlCQUFWbVg7Y0FFTCxHQXFCY3pyQixXQXZCQ3NVLGdCQUFWbVg7ZUFJd0MsV0FtQi9CenJCLE1BdkJDc1U7O2FBRFQsa0JBd0JRdFU7VUFTcUI7bUJBVHJCQSxXQUtOc3JDO1dBSTJCLGlCQUp0Qmg3RCxLQUxDMHZCLFdBQU1zcUMsT0FLUGg2RDtVQVdmLGVBTEltN0QsV0FEQUQsU0FWWXhyQztnQkFzQmhCLElBRFUwckMsY0FDVixZQURVQSxLQXJCTTFyQzs7VUE4RmYsd0JBQWEsb0JBOUZFQSxVQTZGSDJyQztVQUVaLGlCQS9GZTNyQyxNQThGWDRyQztVQUNKLFlBRllELFdBN0ZHM3JDO2FBOEdaNnJDLGFBQWE3ckM7TUFDbkI7UUFBTSxtQkFEYUE7UUFDYjtVQUlEOztXQUZJd3NCO1dBQWFqdEM7V0FBUG1xRDtXQUNUb0MsY0FKYTlyQztXQUtkLFVBRkl3c0I7V0FFSixjQUxjeHNCLFlBSWI4ckM7VUFDK0Q7WUFDakUsT0FOZTlyQztZQU9ELElBQVZzcUMsWUFKQzlkLFVBekxQbWQ7WUE4TEUsZ0JBUmUzcEMsTUFPWHNxQyxPQUpPWjtZQUtYLFlBTGtCbnFELFNBSEh5Z0I7O1VBRVQ7aUJBU0w7YUFJSCtyQyxnQkFBZ0IvckMsTUFBTTBEO01BQU0sV0FBWjFELE1BQU0wRCxLQUFNLG9CQUFaMUQsTUFBb0Q7YUFJcEVnc0Msa0JBQWtCaHNDLE1BQU13c0IsS0FBS240QztNaERqY2xDLE9nRDZiSzAzRCxnQkFJa0IvckMsU0FBTXdzQixRQUFLbjRDLEdBQUxtNEMsTUFDa0Q7YUFXMUV5ZixzQkFBc0JDO01BQ3hCLE1BRHdCQTtNQUN4QixJQUNJQyxjQXRhQTNDO01BcWFKLGtCQUNJMkMsWUFGb0JELE1BR3dCO2FBVzlDRSxTQUFTcHNDLE1BQU0xdkI7TUFDWCxrQkFESzB2QjtNQUNMOzs7U0FFZW1zQztTQUFaRTtjQUFZRjtXQUFaRSxhQUhFcnNDLFVBT1AsNkJBUE9BO1FBU1AsU0FOaUJtc0M7UUFNakI7OztZQU9FO3NCQWhCVzc3RDthQWdCWDs7aUJBYmU2N0QsZ0JBSFZuc0MscUJBa0JILFFBbEJHQTs7WUFXTDs7Ozs7Y0FYVzF2QixJQUdJNjdELGdCQUhWbnNDLHFCQWFILFFBYkdBLGFBQU0xdkI7WUFzQlg7OztNQXBCSSxRQW9CRjthQUtOZzhELFVBQVV0c0MsTUFBTXJxQixFQUFFK3pEO01BQ3BCLFdBRFkxcEMsTUFBUTBwQztNQUNwQixHQURrQi96RCxFQUVSLFNBRkVxcUI7TUFFaUIsSUFDekJ1c0MsUUFIUXZzQyxVQUFRMHBDO01BRVMsWUFDekI2QyxLQUhRdnNDLFNBSXVCO2FBTWpDd3NDLGdCQUFnQnhzQyxNQUFNdXJCLE9BQU9raEI7TUFDL0IsWUFEa0J6c0M7TUFDbEIsR0FEa0JBO1FBR2hCLFdBSGdCQSxjQUladXNDLFFBREEvZixRQUhrQmpCLE9BQU9raEI7ZUFWN0JILFVBVWdCdHNDLFFBSVp1c0M7TUFFTixTQU5rQnZzQztNQU1sQjtRQUNLLFNBUGFBO2VBL0RoQmdzQyxrQkErRGdCaHNDLE1BMURsQjtpQkFpRTJDO2FBT3pDMHNDLGFBQWExc0M7TUFDZixhQURlQTtNQUNmO1FBQ0EsR0FGZUE7VUFLWCxXQUxXQSxTQXVNVHdzQixXQWpNRixTQU5XeHNCLFNBTVUsU0FOVkE7UUFNOEIsWUFOOUJBOzs7O01BSFcsV0FZdkI7YUFJRDJzQyxhQUFhM3NDLE1BQU0wcUM7TUFDckIsR0FEZTFxQyxXQUdiLEtBSG1CMHFDLFNBQU4xcUMsVUFJYixXQUphQSxVQUFNMHFDO01BSWEsU0FKbkIxcUM7TUFJbUI7UUFHaEMsSUFBSTBwQyxTQVBlZ0IsVUFPbkIsa0JBUGExcUMsU0EwTFR3c0IsS0FuTEFrZDtpQkFDb0Q7YUFJeERrRCxjQUFjNXNDO01BQ2hCLEdBRGdCQSxVQUVkLFdBRmNBLFNBOEtWd3NCO01BNUttRSxTQUZ6RHhzQjtNQUV5RDtRQUVqRSxrQkFKUUE7UUFJUixVQUdKLElBREswcUMsa0JBQ0wsa0JBUFkxcUMsVUFNUDBxQztRQUZEOzs7aUJBRzZCO2FBRW5DbUMsWUFBWTdzQyxNQUFNM3JCLEdBQUksb0JBQVYyckIsb0JBQU0zckIsR0FBcUM7YUFDdkR5NEQsYUFBYTlzQyxhQUFXLHFCQUFYQSxRQUFpQzthQUU5QytzQyxrQkFBa0Ivc0MsTUFBTXJxQixHQUFJLFlBQUpBLEVBQUksUUFBd0I7YUFDcERxM0QsaUJBQWlCaHRDLE1BQU1ycUIsR0FBSSxZQUFKQSxFQUFJLFFBQXVCO2FBQ2xEczNELGtCQUFrQmp0QyxhQUFXLE9BQVhBLFNBQThCO2FBQ2hEa3RDLGlCQUFpQmx0QyxhQUFXLE9BQVhBLFNBQTZCO2FBQzlDbXRDLFlBQVludEMsTUFBTXJxQjtNQUNwQixrQkFEY3FxQixNQUFNcnFCLEdBQ3BCLHdCQURjcXFCLE1BQU1ycUIsRUFDK0I7YUFJakR5M0QsK0JBQWdDcHRDO01BQVcsVUFBWEEsd0NBS25DO2FBR0dxdEMsK0JBQWdDcnRDO1VBSVpzdEMsYUFEREMsYUFEQUMsYUFEREM7TUFEY3p0QyxZQUNkeXRDO01BRGN6dEMsWUFFYnd0QztNQUZheHRDLFlBR2J1dEM7TUFIYXZ0QyxZQUlac3RDOzthQVNwQkksU0FBUzF0QztNQWpYWDs7Y0FpWFdBO01BRVgsc0JBRldBO01BR1gsTUFIV0E7TUFJWCxNQUpXQTtNQUtYLE1BTFdBO01BTVgsTUFOV0E7TUFNWDs7aUJBTldBO01BdEVlLHVCQXNFZkEsVUFVVTthQU9uQjJ0QyxlQUFlM3RDLE1BQU1ycUI7TUFKdkIsU0FJaUJxcUI7TUFKakIsdUJBQXFCLG9CQUlKQSxRQUp5QjtNQU9uQjtlQUhOQSxXQUdmLGFBSGVBO1FBS2pCLFlBL1dFMnBDO1FBZ1hGLGFBTmlCM3BDO1FBTWpCLEdBTnVCcnFCLEVBT2Isa0JBUE9xcUI7UUFPZ0IsZ0JBUGhCQSxPQVFIO2FBU1o0dEMsaUJBQWlCNXRDLE1BQU13c0IsS0FBS240QztNQUM5QixTQURtQjJyQjtNQUNuQixZQUNLLGtCQUZjQSxNQUFNd3NCLEtBQUtuNEMsT0FFSzthQUdqQ3c1RCxZQUFZN3RDLE1BQU04dEMsTUFBTXo1RDtNaER4bkI3QixPZ0RtbkJLdTVELGlCQUtZNXRDLE1BQU04dEMsTUFBTXo1RCxFQUNrQjthQUcxQzA1RCxnQkFBZ0IvdEMsTUFBTTNyQjtNQUN4QixtQkFEa0IyckIsTUFDbEIsc0JBRHdCM3JCLEtBQ2E7YUFFbkMyNUQsZUFBZWh1QyxNQUFNM3JCO01BQ1ksbUJBRGxCMnJCLE1BQ2tCLHFCQURaM3JCLEdBQ1ksU0FEWkEsR0FDK0I7YUFHcEQ0NUQsYUFBYWp1QyxNQUFNcndCO01BQTBCLHVCQUFoQ3F3QixNQUFnQyw0QkFBMUJyd0IsR0FBMkM7YUFHOUR1K0QsZUFBZWx1QyxNQUFNbnNCO01BQTBCLHVCQUFoQ21zQixNQUFnQyxVQUExQm5zQixHQUE2QzthQUdsRXM2RCxjQUFjbnVDLE1BQU1ycUI7TUFBMEIsdUJBQWhDcXFCLE1BQWdDLGVBQTFCcnFCLEdBQTRDO2FBR2hFeTRELGNBQWNwdUMsTUFBTWpwQixHQUNGLG1CQURKaXBCLFFBQ0ksU0FERWpwQixHQUNlO2FBSW5DczNELGFBQWFydUMsYUFBVyx1QkFBWEEsVUFBMEM7YUFDdkRzdUMsYUFBYXR1QyxNQUFNdXJCO01BQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUE2QzthQUVoRWdqQixjQUFjdnVDLE1BQU11ckI7TUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQThDO2FBQ2xFaWpCLGVBQWV4dUMsTUFBTXVyQjtNQUFTLHVCQUFmdnJCLE1BQU11ckIsU0FBK0M7YUFDcEVrakIsWUFBWXp1QyxNQUFNdXJCLFFBQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUE0QzthQVc5RG1qQixpQkFBaUIxdUM7TUFDbkIsZUFEbUJBLFNBQ25CLGtCQURtQkEsWUFDNkI7YUFDOUMydUMsZUFBZTN1QztNQUNqQixlQURpQkEsU0FDakIsa0JBRGlCQSxZQUNnQzthQUkvQzR1QyxpQkFBaUI1dUM7TUFDbkIsU0FEbUJBO01BQ25CLFlBQ0UsZ0JBRmlCQSxTQTZDYndzQixlQTNDc0U7YUFJMUVxaUIsb0JBQW9CN3VDO01BQ3RCLFNBRHNCQTtNQUN0QixZQUNFLGdCQUZvQkEsU0F1Q2hCd3NCLGVBcENxRDthQUt6RHNpQixzQkFBc0I5dUMsTUFBTzZxQyxLQUFNRDtNQUNyQzthQUQrQkM7T0FDL0IsTUFEK0JBO09BQy9CLE9BRCtCQTtPQUMvQixLQUR3QjdxQztNQUN4QjtRQUVFO2dCQUhzQkE7U0FJbEIwcEMsU0FKeUJtQixLQUFNRDtTQUsvQnJyRDtpQ0FKRnU0QixVQUFReEQ7O2dDQUFPdUQ7OztTQUtiMDBCLFFBSEEvZixLQUNBa2QsTUFDQW5xRDtlQXJNSitzRCxVQWdNc0J0c0MsUUFNbEJ1c0M7aUJBQ3FCO2FBTXpCd0MsZUFBZS91QyxNQUFNc1UsTUFBTWxEO01BQzdCO2VBRGlCcFIsZ0JBQU1zVSx3QkFBTWxELGVBRW1CO2FBUTlDNDlCLGVBQWVodkMsYUFBVyxzQkFBWEEsVUFBbUM7YUFDbERpdkMsYUFBYWp2QyxhQUFXLHNCQUFYQSxVQUFtQzthQUloRGt2QyxhQUFhbHZDO01BQ2YsWUFEZUE7TUFDZixTQURlQTtNQUNmO1FBRUUsSUFDSXVzQyxRQURBL2Ysc0JBQUosdUJBSGF4c0IsTUFJVHVzQztpQkFDc0I7YUFJMUI0QyxjQUFjbnZDO01BQ2hCLGFBRGdCQTtNQUNoQjtRQUNBLFNBRmdCQTtRQUVoQjtVQUVHLElBQUl1c0MsUUFWRC9mO1VBV0gsZ0JBTGF4c0IsTUFJVHVzQztVQUNKLFlBTGF2c0M7VUFJYjs7Ozs7aUJBR0E7YUFJRG92QyxnQkFBZ0JwdkMsTUFBTXNVLE1BQU1sRDtNQUM5QixTQURrQnBSO01BQ2xCO1FBQ0UsV0FGZ0JBLGNBR1p1c0MsUUFEQS9mLFFBRmtCbFksTUFBTWxELFFBQU5rRDtlQWhQdEJnNEIsVUFnUGdCdHNDLFFBR1p1c0M7aUJBQ3FCO2FBR3pCOEMsYUFBYXJ2QyxhQUFXLHVCQUFYQSxVQUFvQzthQUVqRHN2QyxXQUFXdHZDO01BQ2IsU0FEYUE7TUFDYixTQUNFLElBQUl1c0MsUUE1QkEvZixVQTRCSix1QkFGV3hzQixNQUVQdXNDO2lCQUNzQjthQVUxQmdELGlCQUFpQnZ2QyxNQUFNN3JCO01BQUksYUFBSkEsTUFBSSxXQUFWNnJCLFlBQU03ckIscUJBQXlDO2FBR2hFcTdELGlCQUFpQnh2QyxhQUFXLE9BQVhBLFNBQTZCO2FBRTlDeXZDLGtCQUFrQnp2QztNQUFXLE9BQVhBLDJCQUFtRDthQUdyRTB2QyxxQkFBcUIxdkMsTUFBTTNyQixHQUFJLFlBQUpBLEVBQUksUUFBc0I7YUFDckRzN0QscUJBQXFCM3ZDLGFBQVcsT0FBWEEsU0FBNEI7YUFJakQ0dkMsU0FBU3o3RCxHQUNYLE9BRFdBLDJCQUNvQzthQWU3QzA3RCxrQkFBa0I3dkMsTUFBTS9hO01BQzFCLGFBRDBCQTtNQUMxQjtRQUNFLFFBRmtCK2EsV0FBTS9hLFFBVjFCLFVBRDhCQztRQUM5QjtVQUNVLElBQUovUSxFQUFJLFNBRm9CK1E7VUFFcEIsV0FBSi9RO1VBQUksV0FTVTZyQjtVQVRWLGdCQVNVQTtRQWZwQjtpQkFpQm1EO2FBR2pEOHZDLGtCQUFrQjl2QyxhQUFXLE9BQVhBLFFBQThCO2FBRWhEK3ZDLGNBQWMvdkMsTUFBTTdyQjtNQUN0QixjQURzQkE7TUFDdEI7UUFDVSxJQUFKOFEsSUFBSSxTQUZZOVE7UUFFWixXQUFKOFE7UUFBSTtTQUVKK3FEO1VBSlVod0M7O1lBV1gsTUFBUSxNQVhHQTtRQVlzQix5QkFadEJBLE1BSVZnd0M7aUJBVWtDO2FBTXRDQztVQUFtQkMsZ0JBQVFDOzZCQUFSRCxVQUFRQzthQU8zQkMsZUFBZUM7TUFDWCw0QkFEV0EsVUFDWCx5QkFFWTthQUVoQkMsY0FBY3R3QyxhQUFXLE9BQVhBLFFBQTBCO2FBRXhDdXdDLHFCQUFxQnZ3QztVQUFPa3dDLGdCQUFRQztNQUN0QyxjQUR1Qm53QyxNQUFPa3dDO01BRTlCLGtCQUZ1Qmx3QyxNQUFlbXdDO01BRXRDO2FBR0VLLGdCQUFnQnh3QyxNQUFPbXdDLFdBQVlEO01BQ3JDLGdCQUR5QkMsV0FBWUQsUUFFL0Isd0JBREZHO01BQ0Usa0JBSUosNEJBTmdCcndDLE1BQ2Rxd0M7TUFBSixJQUVRM3dEO01BQ2tCLHlEQURsQkEsS0FHNkI7YUFFbkMrd0QscUJBQXFCendDLE1BQU9td0MsV0FBWUQ7TUFDMUMsZ0JBRDhCQyxXQUFZRCxRQUVwQyx3QkFERkc7TUFDRSxzQkFJSixxQkFOcUJyd0MsTUFDbkJxd0MsV0FLaUM7YUFFbkNLLGdCQUFnQjF3QyxhQUM4QixVQUQ5QkEsa0JBQzBEO2FBRTFFMndDLG1CQUFtQjN3QyxNQUFNd0s7TUFDWixJQUFYNmxDLFNBQVcsZ0JBRE1yd0M7TUFFTSw0QkFGTkEsTUFFTSxXQUZBd0ssT0FDdkI2bEMsVUFDd0M7YUFHMUNPLCtCQUErQjV3QztVQUtoQi9iLFdBREF0VSxXQURDd3JCLFdBREY5RixXQURDeGhCO01BRGdCbXNCLFlBQ2hCbnNCO01BRGdCbXNCLFlBRWpCM0s7TUFGaUIySyxZQUdmN0U7TUFIZTZFLFlBSWhCcndCO01BSmdCcXdCLFlBS2hCL2I7O2FBUWY0c0QsK0JBQStCN3dDO01BQVcsVUFBWEEsa0RBTWxDO2FBSUc4d0MsK0JBQWtDOXdDLE1BQU1uc0IsRUFBRXdoQjtNQUM1QyxZQUQwQ3hoQixFQUMxQyxZQUQ0Q3doQixFQUM1QyxRQUFpRDthQUUvQzA3QywrQkFBa0Mvd0M7TUFDcEMsVUFEb0NBLG9CQUNLO2FBSXZDZ3hDLGdCQUFnQmh4QztNQUFXLGtCQUFYQSxxQkFBd0M7SUFHM0MsSUFBYml4QyxXQUFhO2FBV2JDLGVBVm1CbHhDLE1BQU03ckI7TWhEbDRCOUIsSWdEazRCOEI4UTtNQUMzQjtxQkFEMkJBO1FBQzNCO1VBQ0EsUUFGMkJBO1lBSXpCLFdBSm1CK2EsVUFEbkJpeEM7WUFLQSxRQUp5QmhzRDs7VUFFWCxrQkFGSythLFVBRG5CaXhDLGFBQ3lCaHNEO29CQU14QjtJQVBZLFNBZWJrc0QsNkJBQTZCbnhDLE1BQU0xb0I7TUFDZDs7K0JoRGo1QjFCLE9nQjZES0ssaUJnQ20xQm1DTDtNQUNkLDRCQUNVLHFCQUZJQSxHQUVJO01BQ2pCLDJCaERuNUIzQixPZ0Q4M0JLMDVELGdCQWtCNkJoeEM7TUFJUiwyQmhEcDVCMUIsT2dENDRCS2t4QyxlQUk2Qmx4QztNQUtSLDJCaERyNUIxQixPZ0Q0NEJLa3hDLGVBSTZCbHhDO01BS1IsUUFBb0I7SUFwQjVCLFNBNEJib3hDO01BQTJCO1lBQ2hCLzhELFdBQVcsc0JBQVhBO01BQ04sYUFBRTtJQTlCTSxTQStCYmc5RDtNQUE0QjtZQUNqQmg5RCxXQUFZLHNCQUFaQTtNQUNOLGFBQUU7SUFqQ00sU0FtQ2JpOUQsZ0NoRHA2Qkw7SWdEaTRCa0IsU0FvQ2JDLGlDaERyNkJMO0lnRGk0QmtCLFNBd0NiQyxrQkFBa0IzOUQsRUFBRXdoQixFQUFFOEYsRUFBRXhyQixFQUFFc1U7TUFFYixvQ0FsNEJYdWxEO01BcTRCSixJQUZJa0ksUUFEQUQ7TUFBVyxJQUlYRSxXQUFhO01BQ2pCLHNCQURJQTtNQUVKLFVBTElELFNBR0FDO01BSlcsSUFjRyxpQkFERCxpQkFEQztNQURFO2NBUGhCQTtjQU9nQjs7Ozs7Ozs7Ozs7OztjbkNsMUJWeDhEOztjbUNxMEJVdEI7Y0FBRXdoQjtjQUFFOEY7Y0FBRXhyQjtjQUFFc1U7OztjQVoxQm10RDtjQUdBQztjQUlBQztjQUNBQztjQU1FRSxTQXNDSDtJQWhGYyxTQW9GYkcsMkJBQTJCQztNQUM3QjtlQUQ2QkEsNERBTVI7SUExRk4sU0ErRmJDLGVBQWV0NkQsT0FBTzZFO01BQ3hCLG9CaERqK0JIO01nRGkrQkcsb0JoRGorQkg7TWdEaStCYTtPQUFOMDFEO1FBQU0sa0JBRE92NkQsT0FBTzZFLHFCaERoK0IzQjtNZ0RrK0J5Qix5QmhEbCtCekIsT2dEODNCSzIwRCxnQkFtR0VlO01BRWlCLHlCaERuK0J4QixPZ0Q0NEJLYixlQXFGRWE7TUFHaUIseUJoRHArQnhCLE9nRDQ0QktiLGVBcUZFYTtNQUdpQixPQUhqQkEsR0FJRDtJQXBHWSxTQXdHYkMseUJBQXlCMTZEO01BQzNCLHFCQUFnRCxxQkFEckJBLEdBQzZCO01BQXpDOztpQmhEMStCbEIsT2dCNkRLSyxpQmdDNDZCeUJMO29CQUM4QjtJQXpHMUMsU0E2R2IyNkQsb0JBQW9CdDhEO01BQ3RCLG9CaEQvK0JIO01nRCsrQmtCOztpQmhELytCbEIsT3dDb0tLdzdCLGNRMDBCb0J4N0I7b0JBQ3dCO0lBOUcvQixJQW9IYnU4RDtJQXBIYSxTQXFIYkMsc0JBQW9CLGdCQURwQkQsZUFDZ0Q7SUFHdkM7O0tBSU8sdUNoQ2grQmhCejdEO0tnQ2krQmdCLHVDaENoK0JoQkM7S2dDaStCZ0Isa0NBTmhCMDdEO0lBTWdCLFNBT2hCSSx1QkFBdUIxNUQsSUFBSWk1RDtNQUM3QixlQUQ2QkEsT0FFckIsSUFBSjE5RCxFQUFJLFNBRmlCeUUsS0FHekIsTUFIeUJBLEtBR3pCLE9BREl6RSxDQUVIO0lBWGlCLFNBZWhCbytEO01BQXlCLDhCQXJCekJMLE9BTUFHLGNBZW9FO0lBZnBELFNBeUNoQkcsbUNBQ0YsWUFBaUM7SUExQ2YsU0E0Q2hCQyw2QkFBNkJDLEtBQy9CLG1CQUFrQztJQTdDaEIsU0ErQ2hCQywyQkFBMkJELEtBQzdCLFdBRDZCQSxPQUNRO0lBaERuQixTQWtEaEJFLDZCQUE2QkY7TUFDbkIsSUFBUkcsTUFBUSwyQkFEbUJIO01BRS9CLDZCQUYrQkE7TUFFL0IsT0FESUcsS0FFQztJQXJEYSxTQXVEaEJDLHlCQUF5QkosSUFBSUs7TUFDL0IsWUFEK0JBLEtBQUpMLFFBQzNCLFFBQW9FO0lBeERsRCxTQTBEaEJNLCtCQUFvQ047TUFZOUIsU0FBSi8rRCxFQVBvQlEsRUFBRTFFLEVBQUV3RSxHQUNrQixnQ0FOUnkrRCxPQU1RLE1BRHRCditELEVBQUUxRSxFQUFFd0U7TUFRcEIsU0FBSmtoQixRQVhGLGdDQUZvQ3U5QztNQWM5QixTQUFKejNDLFFBVkYsZ0NBSm9DeTNDO01BZTlCLFNBQUpqakUsRUFSb0J3RSxHQUN0QixnQ0FSb0N5K0QsT0FPZHorRDtNQVNoQixTQUFKOFAsRUFQb0I5UCxHQUN0QixnQ0FWb0N5K0QsT0FTZHorRDtNQU9oQix5QkFKSk4sRUFDQXdoQixFQUNBOEYsRUFDQXhyQixFQUNBc1UsRUFDdUI7SUFTYixTQUFaa3ZELGdCaERubENMLE9nRGlwQks5RSxhQTRXQWdFO0lBdUZZLFNBQVplLGdCaERwbENMLE9nRGtwQks5RSxhQTJXQStEO0lBd0ZhLFNBQWJnQixpQmhEcmxDTCxPZ0RvcEJLOUUsY0F5V0E4RDtJQXlGYyxTQUFkaUIsa0JoRHRsQ0wsT2dEcXBCSzlFLGVBd1dBNkQ7SUEwRlcsU0FBWGtCLGVoRHZsQ0wsT2dEc3BCSzlFLFlBdVdBNEQ7SUEyRlksU0FBWm1CLGdCaER4bENMLE9nRDhnQks5RyxhQStlQTJGO0lBNEZXLFNBQVhvQixlaER6bENMLE9nRGdqQks1RyxZQTZjQXdGO0lBNkZZLFNBQVpxQixnQmhEMWxDTCxPZ0RpakJLNUcsYUE0Y0F1RjtJQThGWSxTQUFac0IsZ0JoRDNsQ0wsT2dEMmhCS2hILGFBa2VBMEY7SUErRmEsU0FBYnVCLGlCaEQ1bENMLE9nRHVpQktoSCxjQXNkQXlGO0lBZ0dXLFNBQVh3QixvQmhEN2xDTCxPZ0R3bkJLaEcsWUFxWUF3RTtJQWlHZSxTQUFmeUIscUJoRDlsQ0wsT2dENG5CSy9GLGdCQWlZQXNFO0lBa0djLFNBQWQwQixvQmhEL2xDTCxPZ0QrbkJLL0YsZUE4WEFxRTtJQW1HWSxTQUFaMkIsa0JoRGhtQ0wsT2dEbW9CSy9GLGFBMFhBb0U7SUFvR2MsU0FBZDRCLG9CaERqbUNMLE9nRHNvQksvRixlQXVYQW1FO0lBcUdhLFNBQWI2QixtQmhEbG1DTCxPZ0Q0b0JLOUYsY0FpWEFpRTtJQXNHYSxTQUFiOEIsaUJoRG5tQ0wsT2dEeW9CS2hHLGNBb1hBa0U7SUF1R2MsU0FBZCtCO01oRHBtQ0wsT2dEbXNCS3JGLGVBMFRBc0Q7SUF3R1ksU0FBWmdDLGdCaERybUNMLE9nRDhzQktwRixhQStTQW9EO0lBeUdjLFNBQWRpQyxrQmhEdG1DTCxPZ0Q2c0JLdEYsZUFnVEFxRDtJQTBHZ0IsU0FBaEJrQyxvQmhEdm1DTCxPZ0R3cUJLM0YsaUJBcVZBeUQ7SUEyR2MsU0FBZG1DLGtCaER4bUNMLE9nRG1xQks3RixlQTBWQTBEO0lBNEdnQixTQUFoQm9DO01oRHptQ0wsT2dEaXFCSy9GLGlCQTRWQTJEO0lBNkdtQixTQUFuQnFDO01oRDFtQ0wsT2dEOHFCSzdGLG9CQStVQXdEO0lBK0dZLFNBQVpzQyxnQmhENW1DTCxPZ0RrdEJLekYsYUEyU0FtRDtJQWdIYSxTQUFidUMsaUJoRDdtQ0wsT2dEMnRCS3pGLGNBa1NBa0Q7SUFpSGUsU0FBZndDO01oRDltQ0wsT2dEc3VCS3pGLGdCQXVSQWlEO0lBbUhVLFNBQVZ5QyxjaERobkNMLE9nRCt1Qkt4RixXQThRQStDO0lBb0hZLFNBQVowQyxnQmhEam5DTCxPZ0Q2dUJLMUYsYUFnUkFnRDtJQXNIYSxTQUFiMkMsaUJoRG5uQ0wsT2dEZ3lCS2pGLGNBNk5Bc0M7SUF1SGEsU0FBYjRDLGlCaERwbkNMLE9nRDYvQks1QztJQXlIaUIsU0FBakI2QztNaER0bkNMLE9nRHl4QktyRixrQkFvT0F3QztJQTBIaUIsU0FBakI4QyxxQmhEdm5DTCxPZ0Q2L0JLOUM7SUE0SGUsU0FBZitDO01oRHpuQ0wsT2dEdTBCSzVFLGdCQXNMQTZCO0lBNkhvQixTQUFwQmdEO01oRDFuQ0wsT2dEKzBCSzVFLHFCQThLQTRCO0lBOEhlLFNBQWZpRCxtQmhEM25DTCxPZ0R1MUJLNUUsZ0JBc0tBMkI7SUErSGtCLFNBQWxCa0Q7TWhENW5DTCxPZ0QwMUJLNUUsbUJBbUtBMEI7SUFpSWdCLFNBQWhCbUQsb0JoRDluQ0wsT2dENHZCS2pHLGlCQWlRQThDO0lBa0lnQixTQUFoQm9ELG9CaEQvbkNMLE9nRDYvQktwRDtJQW1JaUIsU0FBakJxRDtNaERob0NMLE9nRGl3QktqRyxrQkE0UEE0QztJQXFJb0IsU0FBcEJzRDtNaERsb0NMLE9nRG93QktqRyxxQkF5UEEyQztJQXNJb0IsU0FBcEJ1RCx3QmhEbm9DTCxPZ0Q2L0JLdkQ7SUF5SUYsU0FERXdEO01oRHJvQ0wsT2dEZzVCSzFFLDZCQTZHQWtCO0lBNElGLFNBREV5RDtNaER4b0NMLE9nRCsxQktsRiwrQkE4SkF5QjtJQThJRixTQURFMEQ7TWhEMW9DTCxPZ0Q0MkJLbEYsK0JBaUpBd0I7SUFpSkYsU0FERTJEO01oRDdvQ0wsT2dEczNCS2xGLCtCQXVJQXVCO0lBbUpGLFNBREU0RDtNaEQvb0NMLE9nRHkzQktsRiwrQkFvSUFzQjtJQXNKRixTQURFNkQ7TWhEbHBDTCxPZ0Rva0JLN0ksK0JBeWJBZ0Y7SUF3SkYsU0FERThEO01oRHBwQ0wsT2dENGpCSy9JLCtCQWljQWlGO0lBMEpGLFNBREUrRDtNaER0cENMLE9nRG1qQktySixrQkEwY0FzRjtJQTRKRixTQURFZ0UscUJoRHhwQ0wsT2dENi9CS2hFO0lBOEpGLFNBREVpRSxvQmhEMXBDTCxPZ0RvakJLdEosaUJBeWNBcUY7SUFnS0YsU0FERWtFLG9CaEQ1cENMLE9nRDYvQktsRTtJQWtLRixTQURFbUUsZWhEOXBDTCxPZ0R1akJLckosWUFzY0FrRjtJQWtLRixTQU1Nb0UsY0FBZ0J0MkMsSUFBdUJ1MkMsS0FBSzNFO1VBQTVCNEU7O2lCQUFTLFFBQVRBLGdCQUFTdjJDLGFBQVR3MkMsT0F2ZHBCM0g7UUF1ZHNEOzs7Z0JBR2pENEg7WUFDTCxXQUoyQ0gsS0FBSzNFO1lBS2hELFdBTG9CNkUsT0FBNEI3RTtZQUtoRCxhQUxvQjZFLDRCQUdmQzs7VUFERSxrQkFGb0NILEtBQUszRTtRQUMxQztJQVBSLFNBdUJFZ0YsYUFBZTUyQyxJQUF1QnUyQyxLQUFLM0UsSUFBSWlGO01BQ2pELEdBRGlCNzJDLElBQVMsUUFBVEEsY0FBU0MsYUFBVHcyQyxPQXhlZjNIO01BeWVJLHVCQUQyQytIO01BQzNDO1lBRVNDLGlCQUFIajZEO1FBQ1YsV0FKc0MwNUQsS0FBSzNFLElBR2pDLzBEO1lBWDJCMEUsSUFXeEJ1MUQ7UUFWZjtVQUFNLHFCQURpQ3YxRDtVQUNqQztnQkFFU0UsZUFBSDdOO1lBQ1YsV0FJZTZpRSxPQUE0QjdFO1lBSDNDLFdBR3NDMkUsS0FBSzNFLElBTGpDaCtEO2dCQUgyQjJOLElBR3hCRTs7VUFERjtNQVFBLFFBR3lCO0lBNUJ0QyxTQStCRXMxRCxjQUFjbkYsSUFBSTE5RDtNQUNwQiw4QkFEb0JBLEdBQ3BCO2VBR0lnSTtRQUNGLGdCQUxjMDFELElBS00sTUFMRjE5RCxFQUVoQmlJLFFBQ0FDLFdBREFEO1FBR0Y7a0JBRkVDO1FBRUYsUUFDMkI7O1dBSHpCQSxhQUZBN0U7VUFRSSwwQkFUWXJELEVBR2hCa0k7VUFNSTtZQUVGLFNBQ0EsaUJBWlV3MUQ7OzRCQWNWLFNBQVUsZUFkQUEsWUFpQkw7O1FBRVgsU0FqQkl6MUQsWUFEQTVFO1FBa0JKLFlBQXFCLGNBQVE7SUFsRDdCLFNBb0RFeS9ELGdCQUFrQmgzQyxJQUF1QnUyQyxLQUFLM0U7TWhEbnRDbkQsR2dEbXRDdUI1eEM7T0FBTyxRQUFQQSxZQUFPQzs7V0FBUDNZLDBCQUFtQixRQUFFO01BQWQsVUFFakIsSUFBTDFULFdBQUssa0JBRmlDMmlFLEtBQUszRSxJQUUzQ2grRDtNQURHLGtCQURZMFQsS0FBNEJzcUQ7SUFwRGhELFNBd0RFcUYsZ0JBQWlCdnVELEdBQUlDLE1BQU1pcEQ7TWhEdnRDaEMsbUJnRHd0Q1csSUFBTGgrRCxXQUFLLGtCQURXOFUsR0FBVWtwRCxJQUMxQmgrRDtNQUNRLElBQUw4STtNQUFLLGtCQUZZaU0sTUFBTWlwRCxJQUV2QmwxRDtJQTFETixTQTRERXc2RCxnQkFBaUIvNkQsS0FBTUMsTUFBTXcxRDtNaEQzdENsQyxtQmdENHRDb0IsSUFBTDk3RCxXQUFLLGtCQURFcUcsS0FBWXkxRCxJQUNuQjk3RDtNQUNNLElBQUxqQztNQUFLLGtCQUZPdUksTUFBTXcxRCxJQUVsQi85RDtJQTlEYixTQWtFRXNqRSxZQUFZOS9ELE9BQU8rL0Q7TUFDWCxxQkFDQSx3QkFETnorRDtNQUVKLFdBSGN0QixPQUVWdTZELElBRmlCd0Y7TUFJckIsZUFGSXhGO01BRE0sSUFJTnI2RCxJQUpBb0I7TUFJTSxZQUFOcEIsSUFFQyxNQU5Eb0IsTUFJQXBCLGFBQ1ksU0FMWm9CLElBTTJCO0lBekUvQixTQXNGRTArRCxzQkFBc0J6RixJQUFJLytEO01BQWEsVUFBYkE7T0FBYSxPQUFiQTtnQkFDRyxvQkFEUCsrRDtnQkFFTyxvQkFGUEE7Z0JBSU8sc0JBSlBBO2dCQUtPLHdCQUxQQTtnQkFNTyx3QkFOUEE7Z0JBUU8scUJBUlBBO2lCQVNPLHFCQVRQQTs7T0FBaUIsT0FBYi8rRDs7Y0FHVG8rQixPQUhTcCtCLGNBR2hCc2hDLE1BSGdCdGhDO2lCQWxqQjFCKzdELGVBa2pCc0JnRCxJQUdaejlCLE1BQU9sRDtnQkFJWTs7Y0FHbEJyNkIsRUFWZS9EO1VBVUcsY0FWUCsrRDtVQVVPLHFCQVZQQSxJQVVYaDdELEdBQTREO0lBaEd6RSxTQXNHTTBnRSxhQUFXMUYsSUFBSTl2RDtNaERyd0N4QjtNZ0Rxd0M4QixVQUFOQTtPQTBCUzs7T0ExQkgsT0FBTkE7O2NBU0lwTyxFQVRKb08sT0FTQ2dCLEVBVERoQjtVQVVuQixhQVZlOHZELElBU0s5dUQ7VUFDcEIsNkJBVmU4dUQsSUFTUWwrRDs7bUJBVEpvTzs7WUFhbkIsSUFEb0NDO1lBQ3BDLGFBYmU2dkQ7WUFjYztxQkFkZEEsa0JBY2MsWUFkekIwRixhQVlnQ3YxRDtjQUdBQztVQUNwQyxhQWhCZTR2RDtVQWlCSztvQ0FBbUIsWUFqQm5DMEYsYUFlZ0N0MUQ7V0FFaEI7O2lDQWpCTDR2RCxJQWlCVnhtQixPQUFRbXNCOzttQkFqQk16MUQ7Ozs7a0JBQytDMkMsSUFEL0MzQyxPQUN1Q3VxQyxhQUFsQnZEOzs7NkJBa0JqQjUwQyxFQW5CSjROLE9BbUJDK21DOzs7bUJBbkJEL21DOzs7O2tCQUs2QzJNLElBTDdDM00sT0FLcUNxb0QsZUFBbEI5Zjs7Ozs2QkFnQmpCenpDLEVBckJGa0wsT0FxQkRzb0M7OzttQkFyQkN0b0M7Ozs7a0JBQytDMkMsSUFEL0MzQyxPQUN1Q3VxQyxhQUFsQnZEOzs7NkJBa0JqQjUwQyxFQW5CSjROLE9BbUJDK21DOzs7bUJBbkJEL21DOzs7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzJCQWdCakJ6ekMsRUFyQkZrTCxPQXFCRHNvQzs7O2NBRUptTSxJQXZCS3owQyxPQXVCUndvQyxJQXZCUXhvQztVQXVCUyxhQXZCYjh2RCxJQXVCSnRuQjtVQUFpQixrQkFBZGlNLElBdkJDcWI7O2NBd0JMNEYsSUF4QlMxMUQsT0F3QlMsYUF4QmI4dkQsSUF3Qkw0RixLQUFrQixzQkF4QmI1Rjs7Y0F5QktyeUQsSUF6QkR1QyxPQXlCRjIxRCxJQXpCRTMxRDtVQXlCUyxhQXpCYjh2RCxJQXlCRTZGO1VBQVcsbUJBQVJsNEQ7TXhDOXdCaEI7ZXdDd3ZCSixhQUhlcXlELElBQ3lCOW9CLFlBbnBCeEMya0IsaUJBa3BCZW1FLElBQzJDdmxCLEtBQVE1bkM7O1NBTWxFLGFBUGVtdEQsSUFLdUJ2bkI7Z0JBdnBCdENvakIsaUJBa3BCZW1FLElBS3lDekgsT0FHaEIsU0FId0IxN0M7ZUFlcEMsYUFwQmJtakQsSUFtQksvb0IsS0FDUSx1QkFwQmIrb0IsSUFtQlExOUQ7Z0JBR0ssYUF0QmIwOUQsSUFxQkd4bkIsS0FDVSxxQkF0QmJ3bkIsSUFxQk1oN0QsR0FLUztJQWhJaEMsU0FzSU04Z0UsYUFBVzlGLElBQUk5dkQ7TWhEcnlDeEI7TWdEcXlDOEIsVUFBTkE7T0E2QlM7O09BN0JILE9BQU5BOztjQVlJcE8sRUFaSm9PLE9BWUNnQixFQVpEaEI7VUFhbkIsYUFiZTh2RCxJQVlLOXVEO1VBQ3BCLDZCQWJlOHVELElBWVFsK0Q7O21CQVpKb087O1lBZ0JuQixJQURvQ0M7WUFDcEMsYUFoQmU2dkQ7WUFpQmM7cUJBakJkQSxrQkFpQmMsWUFqQnpCOEYsYUFlZ0MzMUQ7Y0FHQUM7VUFDcEMsYUFuQmU0dkQ7VUFvQks7b0NBQW1CLFlBcEJuQzhGLGFBa0JnQzExRDtXQUVoQjs7aUNBcEJMNHZELElBb0JWeG1CLE9BQVFtc0I7O21CQXBCTXoxRDs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCdkQ7Ozs2QkFxQmpCNTBDLEVBdEJKNE4sT0FzQkMrbUM7OzttQkF0QkQvbUM7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzZCQW1CakJ6ekMsRUF4QkZrTCxPQXdCRHNvQzs7O21CQXhCQ3RvQzs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCdkQ7Ozs2QkFxQmpCNTBDLEVBdEJKNE4sT0FzQkMrbUM7OzttQkF0QkQvbUM7Ozs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7MkJBbUJqQnp6QyxFQXhCRmtMLE9Bd0JEc29DOzs7bUJBeEJDdG9DOzs7O2tCQVNzQzAwQyxJQVR0QzEwQyxPQVM4QjYxRCxlQUFsQnJ0QjtjQUMvQixhQVZlc25CLElBU2dCdG5CO3FCQTNyQi9CbWpCLGlCQWtyQmVtRSxJQVNrQytGLE9BRVQsV0FGaUJuaEI7Y0FpQjNDRCxJQTFCS3owQztVQTBCUyxhQTFCYjh2RDtVQTBCbUQsdUJBMUJuREEsSUEwQm1ELFdBQXBEcmI7O2NBQ0ppaEIsSUEzQlMxMUQsT0EyQlMsYUEzQmI4dkQsSUEyQkw0RixLQUFrQixzQkEzQmI1Rjs7Y0E0QktyeUQsSUE1QkR1QyxPQTRCRjIxRCxJQTVCRTMxRDtVQTRCUyxhQTVCYjh2RCxJQTRCRTZGO1VBQVcsbUJBQVJsNEQ7TXhDanpCaEI7ZXdDd3hCSixhQUhlcXlELElBQ3lCOW9CLFlBbnJCeEMya0IsaUJBa3JCZW1FLElBQzJDdmxCLEtBQVE1bkM7O1NBTWxFLGFBUGVtdEQsSUFLdUJ2bkI7Z0JBdnJCdENvakIsaUJBa3JCZW1FLElBS3lDekgsT0FHaEIsU0FId0IxN0M7ZUFrQnBDLGFBdkJibWpELElBc0JLL29CLEtBQ1EsdUJBdkJiK29CLElBc0JRMTlEO2dCQUdLLGFBekJiMDlELElBd0JHeG5CLEtBQ1UscUJBekJid25CLElBd0JNaDdELEdBS1M7SUFuS2hDLFNBMktFZ2hFLFdBQVNudEMsRUFBRW1uQztVQUFhdjlCO2E1Q2lLcEJxVTt3QjRDL0pDNW1DLEtBQU8sYUFGRDh2RCxJQUVOOXZELEtBQU8sa0JBRkgyb0IsRUFBRW1uQyxJQUUwQjs7ZUFGYnY5QjtJQTNLMUIsU0FnTEV3akMsWUFBVXB0QyxFQUFFbW5DO01oRC8wQ2pCLElnRCswQzhCdjlCLG9CNUMyYXJCdVYsYTRDM2FNbmYsRUFBRW1uQyxJQUFhdjlCO0lBaEwzQixTQW1MRXlqQyxXQUFTbEc7VUFBY3Y5QjthNUN3YW5CdVYsNEJKMXZEVCxlZ0RrMUM0QnZWO0lBbkx6QixTQXNMRTBqQyxVQUFRbkc7TUFBTSxvQmhEcjFDbkI7TWdEcTFDbUIsc0JoRHIxQ25CLE9nRDAwQ0tnRyxnQkFXUWhHLFVBQXlCO0lBdExuQyxTQXVMRW9HLFNBQU8zakMsS0FBTSw0QkF6VmI2OUIsZUF5Vk83OUIsSUFBK0I7SUF2THhDLFNBd0xFNGpDLFVBQVE1akMsS0FBTSw0QkF6VmQ4OUIsZUF5VlE5OUIsSUFBK0I7SUF4THpDLFNBMExFNmpDLFNBQVN6dEM7VUFBVzRKO2E1Q2tKaEJxVTt3QjRDaEpDNW1DO2lCQUFPOzBCQUZIMm9CLFdBRVVtbkMsS0FBTyxvQkFBUEEsSUFBZDl2RCxJQUF1QyxFQUFDOztlQUZ6QnV5QjtJQTFMdEIsU0ErTEU4akMsUUFBUTlqQyxLQUFNLHlCQUFjN2tDLEdBQUssT0FBTEEsQ0FBTSxFQUExQjZrQyxJQUErQjtJQS9MekMsU0EwUUUrakMsUUF6RVMzdEM7TUFDSCxJQURjNEosYUFDZCxvQkFDRSx3QkFETjcrQjtNQUNNLFNBQ044OEIsSUFBRXh3QjtRQUNKLGFBRkU4dkQsSUFDRTl2RDtRQUVGLGtCQUxPMm9CLEVBS1AsdUJBSkFqMUIsRUFDQW84RCxLQUc4QjtNQUh4QixtQkFDTnQvQixNQUhrQitCO0lBak10QixTQTBNRWdrQyxVQUFRaGtDLEtBQU0sZUFsMUNkKzBCLEtBazFDUS8wQixJQUFxQjtJQTFNL0IsU0E0TUVpa0MsVUFBVTd0QztNQUNKLElBRGU0SixhQUNmLG9CQUNFLHdCQURONytCO01BQ00sU0FDTjg4QixJQUFFeHdCO1FBQ0osYUFGRTh2RCxJQUNFOXZEO1FBRUYsa0JBTFEyb0IsRUFLUix1QkFKQWoxQixFQUNBbzhELEtBRzhCO01BSHhCLG1CQUNOdC9CLE1BSG1CK0I7SUE1TXZCLFNBcU5Fa2tDLFNBQVNsa0MsS0FBTSxpQkE3MUNmKzBCLEtBNjFDUy8wQixJQUFzQjtJQXJOakMsU0F5TkVta0M7TUFDRixlQTVYRXRHLGlCQTRYRixzQkEzWEVDLGdCQTRYNkI7SUFFeEIsUUFKTHFHO0lBSUssU0FTTEMsK0JBQXNDNTRDLE1BQ2pDbnNCLEVBQVN3aEIsRUFBVzhGLEVBQVV4ckI7TUFDckMsK0JBRndDcXdCLE1BQ2pDbnNCLEVBQVN3aEI7TUFDaEIsWUFEMkI4RjtNQUMzQixZQURxQ3hyQjtNQUNyQyxRQUV3QjtJQWJqQixTQWdCTGtwRSwrQkFBc0M3NEM7TUFDeEMsVUFEd0NBLHdDQUVHO0lBSzNDLFNBREU4NEM7TWhEbDVDTCxPZ0RxNENLRiwrQkF4WUF2RztJQTJaRixTQURFMEc7TWhEdjVDTCxPZ0Q0NENLRiwrQkEvWUF4RztJQTJaRixTQVVFMkcsVUFBUXJqRTtNQUNBLElBRFc2K0IsYUFDWCx3QkFEQTcrQjtNQUNBLFNBQ05pMUIsRUFBRTNvQixLQUFNLGFBRFI4dkQsSUFDRTl2RCxLQUFNLHNCQURSOHZELE1BQ29EO01BRDlDLG1CQUNObm5DLElBRmlCNEo7SUFWckIsU0ErQkV5a0MsK0JBQStCajVDO1VBSVpzdEMsYUFEREMsYUFEQUMsYUFEREM7ZUFLZnlMLFVBQVVybEUsRUFBRWdKO1FoRDc3Q25CLDRCZ0Q2N0NnRCxJQUFMeEksV0FBSyxrQkFBL0JSLEVBQTBCUTtRQUFnQixPQUF4Q3dJO01BQ1UsMkJoRDk3QzdCLE9nRDY3Q09xOEQsVUFMZXpMO01BT1EsMkJoRC83QzlCLE9nRDY3Q095TCxVQUpnQjFMO01BTU87TUFDQSwyQmhEaDhDOUIsT2dENjdDTzBMLFVBSGdCM0w7TUFLTztNQUVDLDJCaERqOEMvQixPZ0Q2N0NPMkwsVUFGaUI1TDtNQU1PO0lBekM1QixTQTJDRTZMLCtCQUErQjNrQztNQUN0QixJQUFQNGtDLEtBQU8sK0JBRHNCNWtDO01BQ3RCLFNBQ1A2a0MsY0FBY2hsRSxHQUFJLGtCQURsQitrRSxzQkFDYy9rRSxHQUFzQztNQUQ3QyxTQUVQaWxFLGVBQWVqbEUsR0FBSSxrQkFGbkIra0Usc0JBRWUva0UsR0FBdUM7TUFGL0MsU0FHUGtsRSxlQUFlbGxFLEdBQUksa0JBSG5CK2tFLHNCQUdlL2tFLEdBQXVDO01BSC9DLFNBSVBtbEUsZ0JBQWdCbmxFLEdBQUksa0JBSnBCK2tFLHNCQUlnQi9rRSxHQUF3QztNQUpqRCxVQUNQZ2xFLGNBQ0FDLGVBQ0FDLGVBQ0FDLGdCQUM0RDtJQUdoRSxTQURFQztNaEQzOENMLE9nRHU3Q0tSLCtCQTFiQTVHO0lBaWRGLFNBREVxSDtNaEQ3OENMLE9nRG04Q0tQLCtCQXRjQTlHO0lBaWRGOzs7T0F4ekJFNUQ7T0FpY0E4RTtPQXprQkE3RztPQTBrQkE4RztPQXZjQW5GO09Ba2NBOEU7T0FqY0E3RTtPQWtjQThFO09BaGNBN0U7T0FpY0E4RTtPQWhjQTdFO09BaWNBOEU7T0ExZEF2RjtPQWtlQStGO09BL2RBOUY7T0FnZUErRjtPQXZlQWxHO09BcWVBZ0c7T0ExZEE1RjtPQTZkQStGO09BMWRBOUY7T0EyZEErRjtPQXJkQTdGO09Bc2RBOEY7T0F6ZEEvRjtPQTBkQWdHO09BdFpBbkY7T0F5WkFzRjtPQXhaQXJGO09BdVpBb0Y7T0FsYUF0RjtPQWlhQXFGO09BOWFBdEY7T0FkQUY7T0ErYkEyRjtPQXpiQTFGO09BNGJBNkY7T0F2Y0EvRjtPQXFjQTZGO09BdmNBOUY7T0F3Y0ErRjtPQXpVQTFFO09BbVZBaUY7T0FuVEExRTtPQW9UQTJFO09BM1ZBcEY7T0E2VkFxRjtPQXhWQXBGO09BeVZBcUY7T0E1VEEvRTtPQVlBSTtPQWtUQTRFO09BMVNBM0U7T0EyU0E0RTtPQWhTQTFFO09Ba1NBNEU7T0FyU0E3RTtPQW9TQTRFO09BL1hBL0Y7T0FrWUFpRztPQS9YQWhHO09BZ1lBaUc7T0E5WEFoRztPQStYQWlHO09BOWFBeEc7T0EwWkF5RjtPQWpaQXhGO09Ba1pBeUY7T0E5WEF0RjtPQWlZQXdGO09BbllBekY7T0FvWUEwRjtPQTNZQTNGO09Bd1lBeUY7T0ExV0FuRjtPQThYQWlHO09BN1hBaEc7T0E4WEFpRzs7T0F4bUJBako7T0Fna0JBZ0g7T0FwakJBL0c7T0FxakJBZ0g7T0FyaUJBekc7T0F1bUJBcUo7T0EzbUJBeko7T0FtbUJBcUo7T0FsbUJBcEo7T0FzbUJBc0o7T0FybUJBcko7T0FtbUJBb0o7T0FsbUJBbko7T0FzbUJBcUo7T0E1UUFwRjtPQXFQQTBFO09BL1FBL0U7T0F1UkFrRjtPQXBSQWpGO09Bc1JBa0Y7T0FoVEFyRjtPQXlTQWtGO09BNVJBakY7T0E4UkFrRjtPQXRrQkExSTtPQThrQkE2STtPQXRsQkE5STtPQXdsQkErSTtPQTNLQW5FO09Bb0JBSztPQUNBQztPQWhCQUw7T0FXQUc7T0FNQUc7T0FlQUU7T0E5Q0FYO09BWEFGO09BbUZBYztPQUdBQztPQUdBRTtPQUdBQztPQUtBRTtPQUdBRTtPQTRHSXVEO09BaUJKTTtPQVFBRztPQXFCQUM7T0FJQUM7T0FJQUM7T0EwSEFhO09BQ0FDO09BQ0FDO09Ba0JBSTtPQVdBRTtPQXRCQUo7T0FaQUw7T0FSQUY7T0FlQU07T0FWQUw7T0EwRkFPO09BOURBRTtPQXVEQU87T0FPQVQ7T0F2QkFPO09BS0FDO09BbEJBSDtPQU9BQztPQTUxQkFoTTtPQXlpQkE0RztPQXhpQkEzRztPQXlpQkE0RztPQTZWQXVGO09Bb0JBUTtPQVJBTjtPQVVBTztJQUNGO1FDdnlDSUM7YUFLQUMsVUFBVUM7TUFDWjtRQUNVLElBQUo5aUUsRUFBSSxXQUZFOGlFO1FBRUYsUUFBSjlpRTtRQUFJO2dCQUZFOGlFO1FBRUYsVUFBSjlpRSxFQUlhLFFBTlA4aUU7ZUFFTjlpRTs7OztVQU9KLFFBZEE0aUUsVUFjQSwyQkFkQUE7bUJBa0JDO2FBR0RHLFVBQVVELElBQ1osT0FEWUEsWUFHUCxVQUhPQSxHQUdLO2FBUWZFLGtCQUFrQkY7TUFDWixJQUFKOWlFLEVBQUksVUFEWThpRSxJQUNaLEdBRFlBLE1BRUYsa0JBQ2xCLE9BRkk5aUUsQ0FFSDthQUdDaWpFLGFBQWFILElBQ1IsVUFEUUEsSUFDUixPQURRQSxLQUVOO2FBS1BJLG1CQUFtQkosSUFBSyxhQUFMQSxTQUF5QjthQUU1Q0ssY0FBY0w7TUFDaEIsU0FEZ0JBO01BQ2hCOzs7eUJBQ3NCO1FBQ00sSUFBZjc0QztRQUFlLE9BQWZBLE1BRThCO2FBR3pDbTVDLFdBQVdOLElBQ2IsT0FEYUEseUJBR1E7YUFLbkJPLFlBQVlQLElBQUssYUFBTEEsTUFBb0M7YUFFaERRLHdCQUF3QlIsSUFBSyxrQkFBb0M7YUF5U25FUyxhQXZTUVQ7TUFDUixpQkFEUUEsTUFFRSxhQUROVTtNQUVKLFFBRklBO01BRUosUUFIUVY7TUFHUixPQURJbjJDLEdBR0Q7YUFLRDgyQyxVQUFVbG1DLE1BQU11bEMsSUFDbEIsd0JBRGtCQSxJQUNsQixPQURZdmxDLEtBRVA7YUFHSG1tQyxZQUFZbm1DLE1BQU11bEMsSUFBSyxpQkFBWHZsQyxjQUFNdWxDLEdBQTZCO2FBRS9DYSxXQUFXcG1DLE1BQU11bEMsR0FBRzlpRTtNQUN0QixTQURtQjhpRSxNQUFHOWlFLEdBQ3RCLG1CQURhdTlCLE1BQU11bEMsR0FFQztRQUdsQmM7YUFFQUMsU0FBT0MsTUFBTXg1RDtNQVFHOztjQW5HaEJzNEQ7Ozs7O2NBMkZhdDREO2NBUUcsU0FWaEJzNUQ7Y0FFT0UsTUFVVjthQUdHQyxjQUFZem1FO01BQ2Qsc0NBRGNBO01BQ2QsU0FFSWdOO1FBQ0YsR0FGRTNKLE9BREEvSCxLQUdnQjtRQUNWLElBQUpvSCxFQUFJLGdCQUxJMUMsRUFDVjFFO1FBSU07ZUFBSm9ILENBRUg7TUFOSCxrQkFFSXNLLEtBS21COztJQUdMLFNBQWhCMDVELHNCakQxUlAsT2lEa1FPSDtJQXdCZ0IsSUFxRGRsakU7SUFyRGMsU0E4Q2hCc2pFLGtCQUFrQjVpRTtNQUFLLHNCQUFMQSxJQUFLLGlCQUFxQztJQTlDNUMsU0FrRGhCNmlFLGtCQUFrQjdpRSxJQUFNLGlCQUFpQjtJQWxEekIsU0FvRGhCOGlFLFFBQVFDLGNBQWNOLE1BQU16aUU7TUFFOUI7ZUFJSWlKO1FBQ0YsR0FKRTFSLE9BQ0EyaEIsUUFHOEIsSUFBSnZhLEVBQUksZUFMOUIrQixJQUNBbkosTUFJOEIsY0FBSm9IO1FBQzVCLEdBSEVxa0UsT0FHVztRQUNKLGVBVG1CaGpFLEdBRTFCVSxNQURBcEI7UUFRTyxhQUxQNFo7a0JBQ0E4cEQsV0FLaUIsV0FWWEQsY0FBb0IvaUU7a0JBRzFCekksU0FTRSxlQVZGbUosT0FZQztNQVpMLGdCQUZ3QitoRSxNQU1wQng1RCxLQVNhO0lBc0JqQixJQUlFZzZELE1BSkYsUUF2Q0VKLDRCbEMvU0Z6a0U7SWtDc1ZBLFNBTUU4a0UsYUFBYUMsUUFHYnY2QztNQUZGLHdCQUVFQTtRQUNTLElBQUw1b0IsR0FBSyxXQUpJbWpFLFFBR2J2NkM7ZUE5Q0FrNkMsUUFOQUYscUJBb0RBaDZDLE1BQ0k1b0I7TUFGRyxPQUpQaWpFLEtBTytDO0lBR3JDLFNBR1ZHLGdCakRwWVAsT2lEeVhPRixhbEMxVkZyakU7SWtDbVdnQixTQUdkd2pFLG9CakRyWVAsT2lEeVhPSCxhbEMzVkZwakU7SWtDb1dnQixTQUtkd2pFLGVBQWF0akUsSWpEdllwQixPaUQ4VU84aUUsUUFGQUQscUJBMkRhN2lFLE9BQzBCO0lBTnpCLFNBU2R1akUsU0FBUzlCO01BQ1gsU0FEV0E7TUFDWDtPQUlpQzs7UUFKakMsa0JBRUUsSUFEYXpoRSxXQUNiLDZCQURhQTtRQUVhLElBQVB3akU7UUFBTyw2QkFBUEEsTUFDYztJQWRuQixJQWlDWkM7SUFqQ1ksU0FnQ2RDLGFBRUdYLGNBQWMvaUU7TUFDbEI7UUFBSSxjQURjQSxHQURmeWpFOzs7O1VBS0MsSUFERWhDLEdBQ0YsUUFKQXNCLGlCQUFjL2lFO1VBSWQsZ0JBSmNBLEdBR1p5aEUsSUFKSGdDO1VBS0MsT0FERWhDO1FBM0JQLFdBOEJLO0lBSWlCLFNBQXBCa0M7TWpEOWFQLE9pRGthT0QsYUF0RkFiO0lBa0dvQjthQWN0QmUsVUFBVTNuRSxHQUFJLHNCQUFKQSxFQUEwQjtJQWRkLFNBZ0J0QjRuRSxpQkFBaUJsbEU7TUFDVCwwQ0FEU0EsR0FDdUM7SUFqQmxDLFNBb0J0Qm1sRSxpQkFBaUJDO01BRWpCLDBDQUZpQkEsU0FLTjtJQXpCVyxTQW9DdEJDO01BQ0YsZ0RBQXdEO0lBckNoQyxTQXdDdEJDO01BQ0YsZ0RBQXFEO0lBekM3QixTQWdEdEJDLG1CQUFtQnZsRSxFQUFFd2xFO01qRDlkMUIsT2lENGJLUCxVQStCRix5QkFHcUJqbEUsRUFBRXdsRSxJQUNnQjtJQWpEZixTQWtGdEJDLGdCQUFnQjNDLEdBQUc5aUU7TUFDWixJQUFMd2xFLEdBQUssa0JBRFMxQztNQUNULE9BQUwwQyxPQURpQnhsRSxFQUVOLHdCQUZHOGlFLElBR2xCLG1CQUhxQjlpRSxFQUNqQndsRSxHQUVtQjtJQXJGQyxTQTRFbEJFLFdBV1U1QyxHQVBkanJEO01BSEYsVUFHRUE7UUFRTyxJQUFMMnRELEdBQUssa0JBRE8xQztRQUNQLGNBQUwwQztpQkFFTSx3QkFITTFDO3dCQUNaMEM7b0JBR00sd0JBSk0xQyxJQUlOLGdCQUpNQTttQkFLVCxzQkFKSDBDO2dCQVJGM3REO09BM0JGO1NBQVEsZ0JBa0NRaXJELElBakNULFNBaUNTQTtTQWpDVDtXQUF1QixTQUQxQjlpRTtXQUMwQjs7OztXekM0Q3hCLGF5Q3pDRix3QkE4Qlk4aUU7V0E3QlA7O01Bc0JGLHVCQU9TQSxHQVBkanJELElBQXlCO0lBaEZILFNBaUd0Qjh0RCxXQUFXN0MsSUFBd0IsdUJBQW5CLGFBQUxBLE1BQTRCO0lBakdqQixTQXFHdEI4QyxXQUFXOUM7TUFDUCxJQUdKeGxFLEVBSEksYUFET3dsRTtNQUNQLDRCQUdKeGxFOztpQkFBZSxtQ0FBZkE7O2dCQUF3RDtJQXpHbEMsU0FzSHRCdW9FO01BQTZCOzs7aUJBQ3RCO2lCQUNBO2lCQUNBO2lCQUNBO2lCQUNBOztpQkFDTTs7TUFDUiw2QkFBWTtJQTdISyxTQW1JdEJDLGtCQUFrQnppQixLQUFLeWY7TUFDekIsT0FEb0J6ZjttQkFDaEIxMkIsSUFNZ0IsV0FBTyxhQVBGbTJDO21CQUNyQm4yQyxJQUlnQixXQUFPLGFBTEZtMkM7bUJBQ3JCbjJDLElBR2dCLFdBQU8sYUFKRm0yQzttQkFDckJuMkMsSUFLZ0IsV0FBTyxhQU5GbTJDO29CQUNyQm4yQyxJQUUrQixhQUhWbTJDO01BRzJCLElBS2hENWpFLEVBTGdELHNCQUZoRHl0QjtNQVFRLFNBRFJ6dEIsWUFDUSxnQkFSUnl0QjtPQVFxQyxhQVJyQ0EsTUFPQXp0QjtNQUM0QixPQVI1Qnl0QixHQVE2RDtJQTVJekMsU0FvSnRCbzVDLFlBQVlqRCxJQUF3Qyw0QkFBbkIsYUFBckJBLElBQXdDO0lBcEo5QixTQXVMbEJrRCx3QkFBd0J6b0MsTUFBTXVsQztNakRybUJ2QyxJaURxbUJpQ3B5QjtNQUM5QjtpQkFEOEJBLFFBQ1osT0FEWUE7UUFFdEIsSUFHTjF3QyxFQUhNLFVBRjRCOGlFO1FBR2pDLEdBSGlDQSxNQUdaLE9BSE1weUI7UUFJOUIsU0FDRTF3Qzs7WUFJWSx3QkFUZ0Iwd0MsUUFBTW95QixJQUFOcHlCOztrQkFLNUIxd0M7V0FDWSx1QkFOZ0Iwd0MsUUFBTW95QixHQUtsQzlpRSxHQUw0QjB3QztRQVd2QixPQVh1QkEsUUFXbEI7SUFsTVksU0FvUXRCdTFCLDBCQS9Ed0Ixb0MsTUFBTXVsQztNQUNoQyxTQUQwQnZsQyxNQUNSO01BQ1YsSUFBSnY5QixFQUFJLGtCQUZ3QjhpRTtNQUV4QixPQUFKOWlFLGFBTVEsMENBTlJBO01BQUksSUFHRjB3QyxRQUFRLFdBTFluVCxNQUFNdWxDLEdBRTVCOWlFO01BR1UsK0JBQVIwd0MsUUFMMEJveUIsR0FRb0M7SUE3TTVDLFNBa090Qm9ELGdCQUFnQkMsTUFBTUMsT0FBTzNSLFFBQU1xTztNQUdyQyxTQUgrQnJPLFFBR2I7TUFDVixJQUFKNThDLElBQUksa0JBSjZCaXJEO01BS2xDLGNBTHFCc0QsT0FJcEJ2dUQ7UUFFVSx1QkFOaUI0OEMsUUFBTXFPLEdBSWpDanJELEtBbkJnQjBsQjtRQUNsQjttQkFEa0JBLE1BQ0EsT0FEQUE7VUFFVixJQUdOdjlCLEVBSE0sVUFhMkI4aUU7VUFaaEMsR0FZZ0NBLE1BWlgsT0FITnZsQztVQUtULGNBVWE2b0MsT0FWcEJwbUU7WUFDWSx1QkFOSXU5QixNQWVpQnVsQyxHQVZqQzlpRSxHQUxnQnU5QjtvQkFLaEJ2OUI7WUFJWSx3QkFUSXU5QixNQWVpQnVsQyxJQWZqQnZsQztVQVdYLE9BWFdBO01Bd0JSLDBDQUxSMWxCLElBSmNzdUQsT0FTeUQ7SUEzT25ELFNBOE90QkcsdUJBQWtCLCtCQUVSO0lBR1EsU0FBbEJDO01qRGpxQkwsT2lEZ3BCS0wsMkJBWUFJO0lBS2tCLFNBRWxCRSxzQkFBaUIsK0JBRVA7SUFHTyxTQUFqQkM7TWpEeHFCTCxPaURncEJLUCwwQkFtQkFNO0lBS2lCLFNBRWpCRTtNQUFnQjs7Ozs7TXpDMUpaLG1CeUM0Sk07SUFHYSxTQUF2QkM7TWpEL3FCTCxPaURncEJLVCxnQ0EwQkFRO0lBS3VCLFNBS3ZCRSxVQUFVcnBDLE1BQU11bEM7TUFDVix3QkFEVUEsSUFDVixTQUFKOWlFO01BQUk7O2dCQUVDLGtCQUhHdTlCLE1BQU11bEMsR0FDZDlpRTs7aUJBR0ssa0JBSkd1OUIsTUFBTXVsQyxHQUNkOWlFO01BSUcsT0FMS3U5QixLQUtBO0lBVmEsU0FhdkJzcEMsK0JBQW1DdHBDLE1BQU11bEM7TUFDL0IsSUFBUnB5QixRQUFRLFVBRHlCblQsTUFBTXVsQztNQUMvQixpQ0FBUnB5QixRQUR1Q295QixHQUVUO0lBZlQsU0EwQ3ZCZ0Usb0JBQW9CempCLEtBQUtySixRQUFNOG9CO01BQ2pDLE9BRHNCemY7ZUFFSix1QkFGU3JKLFFBQU04b0I7ZUFHZixzQ0FIUzlvQixRQUFNOG9COztTQUpyQixzQkFJZTlvQixRQUFNOG9CLElBbkIzQixvQkFtQjJCQTtTQW5CM0IsVUFDSjlpRTtXQUNZLElBQVJ1OUIsTUFBUSxXQUhNbVQsUUFvQmFveUIsR0FsQi9COWlFO1dBQ1ksU0FBUnU5QixNQUNjLE9BRGRBO1dBQVEsSUFFUjFsQixJQUFJLFVBZXVCaXJEO1dBZDVCLEdBYzRCQSxNQWRQLE9BSHBCdmxDO1dBQVE7V0FJWixTQUZJMWxCOztjQUlvQixpQ0FOcEIwbEIsTUFpQjJCdWxDLEdBZjNCanJELEtBZTJCaXJEO3dCQWYzQmpyRDs7Ozs7MEJBS3FCLGtDQVByQjBsQixNQWlCMkJ1bEMsR0FmM0JqckQsS0FlMkJpckQ7V3pDek0zQjtvQnlDNkxnQyxnQ0FMaEN2bEMsTUFpQjJCdWxDLEdBZjNCanJELEtBZTJCaXJEO29CQVR4Qix3QkFSSHZsQyxNQWlCMkJ1bEM7U0FSMUIsaUNBWmFweUIsUUFvQmFveUI7ZUFLZixzQkFMUzlvQixRQUFNOG9CO2VBTWYsaUNBTlM5b0IsUUFBTThvQjtnQkFPZiw0QkFQUzlvQixRQUFNOG9CLElBT2M7SUFqRHRCLFNBdUR2QmlFLHFCQUFxQnhwQyxNQUFNdWxDO01BQzdCLFNBRHVCdmxDLE1BQ0wsT0FES0E7TUFFZixJQUdOdjlCLEVBSE0sVUFGcUI4aUU7TUFHMUIsT0FIMEJBO2VBQU52bEM7bUJBS3JCdjlCO2lCQUxxQnU5QjtpQkFNRyxtQ0FOSEEsTUFBTXVsQyxHQUszQjlpRSxHQUwyQjhpRSxHQU9qQjtJQTlEYSxTQWtFdkJrRSxtQkFBbUJ6cEMsTUFBTXVsQztNQUMzQixTQURxQnZsQyxNQUNILE9BREdBO01BRWIsSUFBSnY5QixFQUFJLFVBRm1COGlFO01BR3hCLEdBSHdCQSxNQUdILE9BSEh2bEM7Z0JBRWpCdjlCLGVBS0csT0FQY3U5QjtNQU1nQixpREFOaEJBLE1BQU11bEMsR0FFdkI5aUUsR0FGdUI4aUUsR0FPZjtJQXpFYSxTQW9IdkJtRSxXQUFXanRCLFFBQU1rdEIsVUFBVXBFO01BbkNqQjt1QkFtQ0M5b0IsUUFBZ0I4b0I7T0FuQ2pCLGdDQUFSdmxDLE1BbUN5QnVsQztlQUN6QnB5QixRQUNjLFVBRGRBLFFBRGV3MkI7TUFuQ1AsSUFzQ1JsbkUsRUFBSSxVQUhxQjhpRTtNQUkxQixHQUowQkEsTUFJTCxVQUhwQnB5QixRQURldzJCO01BS25CLFVBRklsbkU7UUFJVTs0QkFOVjB3QyxRQUR5Qm95QixHQUd6QjlpRTtTQUtjLGtCQURaeTBELFFBUGF5UztTQVNnQjtVQUY3QnpTOztXQUNBMFMsY0FDNkIscUJBRDdCQSxZQVJ1QnJFOzs7UUFVM0IsNkJBREl1RCxRQVR1QnZELElBUXZCcUU7TUFJSiw2QkFYRXoyQixRQUR5Qm95QixJQUFWb0UsVUFZcUI7SUFoSWYsU0FtSXZCRSw4QkFBOEI3cEMsTUFBTXVsQyxHQUFHL3dELE1BQU12VztNQUMvQyxTQUFJZ1ksVUFBVXhUO1FBQ1osWUFEWUEsZUFHVixhQUhVQSxxQkFJSjtNQUpWO2lDQUQrQ3hFO09BQy9DLFdBRGdDK2hDO09BQ2hDLEtBS0k1OEI7T0FMSjs7WUFPQS9IO1FBQ0U7VUFBUSxnQkFUNEJrcUUsSUFVbEIsZUFBVSxnQkFWaUJ0bkUsSUFRL0M1QztVQUVLLGFBRENvSCxZQUNxQyxXQVZGK1I7VUFVVSxTQUgvQzIrQixXQUlpQixXQVhvQjMrQjtVQVk5Qix3QkFMUDIrQixXQVBrQ295QixHQVNoQzlpRTtVQUFJLFNBRFZwSDs7O01BTUEsT0FQSTgzQyxVQU9FO0lBakptQixTQW9KdkIyMkIsZUFBZTlwQyxNQUFNMnBDLFVBQVVwRTtNQUNqQyxlQURpQnZsQyxVQUNqQixhQUFnQixhQURpQnVsQztNQUNPLFFBQU07TUFBOUM7T0FDWSxrQkFGS3ZsQyxNQUFnQnVsQztPQUVyQixXQUFScHlCO09BQVEsYUFDSSxhQUhpQm95QjtNQUdPLFFBQU07TUFGOUMsSUFHTSxZQUoyQkE7TUFJM0IsU0FDSjlpRTs7OztZQTZCWTtnQ0FoQ1Ywd0MsUUFGNkJveUIsR0FLL0I5aUU7YUE2QlksV0FBUmc2QzthQUFRLGFBQ0ksYUFuQ2U4b0I7WUFtQ1MsUUFBTTtZQUFnQjtxQkFEMUQ5b0IsUUFsQzJCOG9CLEdBN1cvQndDOzs7O2tCQWtYQXRsRTtVQUNZOzhCQUpWMHdDLFFBRjZCb3lCLEdBSy9COWlFO1dBQ1ksV0FBUnFtRTtXQUFRLGFBQ0ksYUFQZXZEO1VBT1MsUUFBTTtVQURsQztXQUVSd0U7WUFBUSw4QkFGUmpCLFFBTjJCdkQsR0E3Vy9Cd0M7VUFzWGdCLFNBRFpnQyxhQUNZLGFBVGV4RTtZQVVYLG9CQVZXQSxJQVVYOzs7OztnQkFBZHlFLGlCQUZGRCxRQUlPLHFCQUpQQSxRQVIyQnhFO1lBYWIsU0FIWnlFLGFBR1ksYUFiYXpFO2NBY1QsSUFDZGpyRCxJQURjLFVBZFNpckQ7Y0FjVCxVQUNkanJEO2dCQUNZLHVCQU5kMHZELFFBVnlCekUsR0FldkJqckQ7Z0JBRWdCLFNBRFoydkQsYUFDWSxhQWpCTzFFO2tCQWtCZixzQkFsQmVBOztvQkFxQkg7dUNBTGhCMEUsUUFoQlNOO3FCQWdCVE87Ozt1QkFLSU4sY0FDaUIscUJBRGpCQSxZQXJCZXJFOzs7O29DQWdCbkIyRTtrQkFFSSxJQUZKQzs7O2dCQUFRLElBRlpDLFFBRUlEOzttQkFGSkMsUUFKRko7Y0FlYyxTQVhaSSxhQVdZLGFBekJXN0U7Z0JBMEJuQixJQUNKaHJELElBREksVUExQm1CZ3JEOzBCQTJCdkJockQsbUJBSUssT0FqQkw2dkQ7Z0JBWUk7aUJBRVEsbUJBZFpBLFFBZHVCN0UsR0EyQnZCaHJEO2lCQUNZLFdBQVI4dkQ7aUJBQVEsYUFDSSxhQTdCTzlFO2dCQTZCaUIsUUFBTTtnQkFBZ0Isc0NBRDFEOEUsUUE1Qm1COUU7Y0F5Qm1CLE9BWDFDNkU7WUFEd0MsT0FIMUNKO1VBRHdDLE9BRDFDRDtrQkFISnRuRTtNekN4VEk7UXlDeVZROzRCQXBDVjB3QyxRQUY2Qm95QixHQUsvQjlpRTtTQWlDWSxXQUFSeTBEO1NBQVEsYUFDSSxhQXZDZXFPO1FBdUNTLFFBQU07UUFBZ0I7aUJBRDFEck8sUUF0QzJCcU8sR0E3Vy9Cd0M7TUFzWkssdUJBQWdCO0lBN0xFLFNBZ012QnVDLHFCQUFxQnRxQyxNQUFNMnBDLFVBQVVwRTtNQUN2QyxlQUR1QnZsQyxVQUN2QixhQUFnQixhQUR1QnVsQztNQUNDLFFBQU07TUFBOUM7T0FDWSxnQ0FGV3ZsQyxNQUFnQnVsQztPQUUzQixXQUFScHlCO09BQVEsYUFDSSxhQUh1Qm95QjtNQUdDLFFBQU07TUFGOUMsSUFHUSxZQUorQkEsSUFJL0IsU0FBSjlpRTtNQUFJOztVQUdNOzhCQUxWMHdDLFFBRm1Db3lCLEdBSW5DOWlFO1dBTWMsa0JBSFpnNkMsUUFQdUJrdEI7V0FhTCxxQ0FIbEJDLFlBVmlDckU7V0FhZixXQUhsQnFFLGNBR0FXO1dBQWtCLFFBTmxCOXRCLFVBU0ErdEI7VUFIa0IsMEJBS2xCdFQsUUFsQmlDcU87O2tDQXFCckMsMEJBbkJFcHlCLFFBRm1Db3lCO01Bc0JoQyxtQkFBWTtJQXROTSxTQXlOdkJrRixnQkFBZ0J6cUMsTUFBTTJwQyxVQUFVcEU7TUFDbEMsZUFEa0J2bEMsVUFDbEIsYUFBZ0IsYUFEa0J1bEM7TUFDTSxRQUFNO01BQTlDO09BQ1ksa0JBRk12bEMsTUFBZ0J1bEM7T0FFdEIsV0FBUnB5QjtPQUFRLGFBQ0ksYUFIa0JveUI7TUFHTSxRQUFNO01BRjlDLElBSUU5aUUsRUFESSxVQUo0QjhpRTtNQUk1QixTQUNKOWlFOztVQWlDWTs4QkFwQ1Ywd0MsUUFGOEJveUIsR0FLaEM5aUU7V0FpQ1ksV0FBUmc2QztXQUFRLGFBQ0ksYUF2Q2dCOG9CO1VBdUNRLFFBQU07VUFBWSw0QkFEdEQ5b0IsUUF0Q2tCa3RCLFVBQVVwRTs7Z0JBS2hDOWlFO1NBQ1k7NkJBSlYwd0MsUUFGOEJveUIsR0FLaEM5aUU7VUFDWSxXQUFSeTBEO1VBQVEsYUFDSSxhQVBnQnFPO1NBT1EsUUFBTTtTQURsQyxJQUdWanJELElBREksVUFSMEJpckQ7bUJBUzlCanJEO1VBMEJBLDRCQTdCRTQ4QyxRQU5rQnlTLFVBQVVwRTtTQU1wQjtVQUlFLG1CQUpWck8sUUFONEJxTyxHQVM5QmpyRDtVQUNZLFdBQVJ3dUQ7VUFBUSxhQUNJLGFBWGN2RDtTQVdVLFFBQU07U0FMcEM7VUFNRSw2QkFGUnVELFFBVjBCdkQ7VUFZbEIsV0FBUndFO1VBQVEsYUFDSSxhQWJjeEU7U0FhVSxRQUFNO1NBUHBDLElBUVEsY0FkWUEsSUFjWixTQUNkaHJEO1NBRGM7O1lBRUYsdUJBSlp3dkQsUUFaMEJ4RSxHQWUxQmhyRDtZQUVnQixTQURaeXZELGFBQ1ksYUFqQlV6RTtjQWtCbEIsb0JBbEJrQkE7O2dCQXFCTjttQ0FMaEJ5RSxRQWhCWUw7aUJBZ0JaTzs7O21CQUtJTixjQUNpQixxQkFEakJBLFlBckJrQnJFOzs7O2dDQWdCdEIyRTtjQUVJLElBRkpEOzs7WUFBUSxJQUFSRTs7OztpREFKSko7U0FOTSxJQVFOSyxpQkFXSyxhQVRERDtTQVVRLFNBWlpDLGFBWVksYUExQmM3RTtXQTJCdEIsSUFDSi9xRCxJQURJLFVBM0JzQitxRDtxQkE0QjFCL3FELG1CQUlLLE9BbEJMNHZEO1dBYUk7WUFFUSxtQkFmWkEsUUFkMEI3RSxHQTRCMUIvcUQ7WUFDWSxXQUFSNnZEO1lBQVEsYUFDSSxhQTlCVTlFO1dBOEJjLFFBQU07V0FBZ0Isc0NBRDFEOEUsUUE3QnNCOUU7U0EwQmdCLE9BWjFDNkU7TUErQkQsbUJBQVk7SUF0UU0sU0ErUXZCTSxZQUFZQyxJQUNEM3FDLE1BRFd1bEM7TWpEOTdCM0IsSWlEKzdCZ0JweUI7TUFDWDtpQkFEV0EsUUFDTyxPQURQQTtRQUVILElBQUoxd0MsRUFBSSxVQUhjOGlFO1FBSW5CLEdBSm1CQSxNQUlFLE9BSGJweUI7UUFJVCxHQUxVdzNCO1VBTUssSUFBUnJ3RCxJQU5HcXdEO1VBTUssR0FIYmxvRSxNQUdLNlgsSUFBa0IsaUJBTGhCNjRCLFFBRFdveUI7VUFNTCxJQUNFLG1CQU5ScHlCLFFBRFdveUIsR0FHbEI5aUUsR0FGTzB3Qzs7UUFFSCxJQU1KLEtBTkExd0M7UUFNQTs7OztRekN2YkEsWXlDd2I4QixPQVR2QjB3QztRQUVILElBUVEsbUJBVkxBLFFBRFdveUIsR0FHbEI5aUUsR0FGTzB3QztpQkFXSDtJQTNSZSxTQStSdkJ5M0IsVUFBVTVxQyxNQUFNdWxDO01BSVcsa0JBSmpCdmxDLE1BQU11bEMsR0FJVyxrQkFKWEEsSUFJMEM7SUFuU25DLFNBZ1V2QnNGLDBCQUNFbHpEO01BQUosYUFBSUEsMENBVWlCO0lBM1VJLFNBMFZ2Qm16RCxnQkFBZ0JqRCxRQUFRN25DLE1BQU11bEM7TUFDaEMsU0FEMEJ2bEMsTUFDUix3QkFEQTZuQztNQUVWLElBQUpwbEUsRUFBSSxVQUZ3QjhpRTtNQUc3QixPQUg2QkEsTUE3akI5QixtQ0E2akJnQnNDLFVBRWRwbEUsQ0FFSDtJQUc0QixTQUEzQnNvRTtNakRoaENMLE9pRHlnQ0tEO0lBUTZCLFNBQTdCRTtNakRqaENMLE9pRHlnQ0tGO0lBUTZCLFNBRTdCRyxvQkFBb0JqckMsTUFBTXVsQztNQUN0QixnQ0FEZ0J2bEMsTUFBTXVsQztNQUN0QixTQW5Ea0IyRjs7Ozs7O2NBaUV0Qjs7O2tCQUNVLGdCQWhCZ0IzRixJQWdCaEIsS0FBSjlpRTtrQkFBSTs7OztrQnpDbmhCTixnQnlDbWhCRUEsRUFHRyxpQkFISEEsRUFHcUI7ZUFDbEI7ZUFDQTtlQXhDSiwrQkFId0I4VDtlQUV4QixvQ0FGcUJEOztzQkFDeEJnRTt5QkFNSixZQU5JQTs7d0JBS0EsbUNBTndCaEUsR0FBR0M7cUJBbHdCM0I2dkQsV0F3eEJrQnBtQyxjQUFNdWxDOzs7Ozs7OztrQkFsREoyRjtXQXVEdEI7OztlQUNVLElBRU56b0UsRUFGTSxVQU5nQjhpRTtlQU1oQixXQUVOOWlFLGFBQ0ssaUJBRExBLElBQ3VCO1lBRWxCO1lBQ0E7WUE1REg7c0JBRmdCeW9FLDJCQUFHRzs7Y0FBR0M7Ozs7bUJBQzFCN29FLDJCQVFKLFlBUklBOztxQkFNQSxtQ0FQb0J5b0UsR0FBR0csS0FBR0M7a0JBdHVCMUJsRixXQXd4QmtCcG1DLGNBQU11bEM7O2lCQWxESjJGO016Q2pkbEI7O1F5Q3FjaUIsVUFZQ0E7Ozs7Ozs7Ozs7OztlQXR1QnBCOUUsV0F3eEJrQnBtQyxNQUFNdWxDO01Bd0IxQix3QkExRXNCMkYsR0EwRUo7SUExQlcsU0E4QjdCSyxlQUVpQnZyQyxNQUZJdWxDO01BRXZCLFNBWUlpRyxVQUFVeHJDO1FBQ04sSUFFSnY5QixFQUZJLHlCQURNdTlCLE1BZFN1bEM7UUFlZixjQUVKOWlFLEVBRFEsWUFGRXU5QixNQWRTdWxDLElBaUJkLHNCQUFMOWlFLEVBQThCO01BZDFCLElBRUpBLEVBRkksa0JBSGU4aUU7TUFHZixVQUVKOWlFO1FBRGtCOzZCQUZIdTlCLE1BRkl1bEM7U0FRZiw2QkFETXB5QixRQVBTb3lCO1FBUWYsY0FHSmpyRDtpQkFEVSw4QkFBcUIsWUFIckI2NEIsUUFQU295QjtpQkFZVCxxQkFMQXB5QixRQVBTb3lCLEdBV25CanJEO01BTkssNkJBQUw3WCxFQWNZO0lBakRlLFNBcUQ3QmdwRSxpQkFFaUJ6ckMsTUFGTXVsQztNQUV6QixTQUtJbUcsb0JBQVUxckM7UWpEN2tDakIsSWlENmtDaUJtVDtRQUNaO1VBQU0sSUFHSjF3QyxFQUhJLDJCQURNMHdDLFFBUFdveUI7VUFRakIsVUFHSjlpRSxFQUZRLG1CQUZFMHdDLFFBUFdveUI7b0JBV3JCOWlFO1lBRHVCO2lDQUhiMHdDLFFBUFdveUI7YUFjakIsaUNBRFc5b0IsUUFiTThvQjtZQWNqQjtjQUVnQixxQkFITDlvQixRQWJNOG9CO2NBZ0JEOzt1QkFRcEJvRzs7O2NBVHFCO21DQUZObHZCLFFBYk04b0I7ZUFvQmpCLG1DQURTdUQsUUFuQlF2RDtjQW9CakI7Z0JBQ2dCLHFCQUZQdUQsUUFuQlF2RDtnQkFxQkQ7O3lCQUdwQm9HOztjQVRxQixJQU9OLG1CQUhGN0MsUUFuQlF2RCxPQU9YcHlCOztZQUdhLElBT1IsNEJBSkFzSixRQWJNOG9CLElBT1hweUI7O1VBQ04sSUFHVyxtQkFKTEEsUUFQV295QixHQVdyQjlpRSxHQUpVMHdDO21CQUlxQztNQVRuRCxTQXNCSXc0QixvQkFBWTNyQztRakQ5bENuQixJaUQ4bENtQm1UO1FBQ2Q7VUFBTSxxQ0FEUUEsUUF4QlNveUI7VUF5QmpCO1lBQ2Usd0JBRlBweUIsUUF4QlNveUIsSUF3QlRweUI7VUFHUDs7bUJBcEJMdTRCLHNCQWlCWXY0Qjt3Q0FqQlp1NEIsZUFpQll2NEIsVUFHUTtNQXpCeEIsU0FLSXE0QixVQUFVeHJDLE9qRDdrQ2pCLHVCaUQ2a0NPMHJDLGNBQVUxckM7TUFKTixJQUVKdjlCLEVBRkksa0JBSGlCOGlFO01BR2pCLGNBRUo5aUU7ZUFEa0Isc0JBRkh1OUIsTUFGTXVsQztlQUtoQixzQkFBTDlpRSxFQXdCWTtJQWxGZSxTQW9HN0JtcEUsdUJBQXVCN3NFLFNBQVM4c0UsV0FBVzdyQyxNQUFNdWxDO01BQ25ELFNBQVF1RyxXQUFXendFLEVBQUVzdkU7UWpEdG5DeEIsSWlEc25Dc0Ivb0U7UUFDakI7VUFBUSxnQkFGeUMyakUsSUFFekMsU0FEUzNqRTtVQUNUO1lBQ1EsYUFIaUMyakU7WUFHakM7YUFDYix3QkFKb0J4bUUsU0FFbkIwRCxHQUVELFVBRkNBLE1BRGVrb0U7Ozs7O1VBS2pCO1lBQVEsV3BDdmhDRjlwRSxRb0NpaEN5QzBrRSxHQUU3QzlpRSxHQUlNLFFBTE9iO3NCQU1PO01BTjFCLEdBRGtDaXFFO1FBV2hDLElBREtwcEUsRUFWMkJvcEU7UUFXaEMsV0FYMkM3ckMsTUFVdEN2OUI7UUFDTCxhQVhpRDhpRTtRQVkxQztVQUNJLElBQUwwQyxHQUFLLFVBYnNDMUM7VUFhdEMsT0FITjlpRSxNQUdDd2xFLEdBRUMsd0JBZjBDMUMsSUFnQjFDLG1CQU5GOWlFLEVBR0N3bEU7UUFKRTt3QkFUbUNqb0MsU0FnQmI7SUFwSEQsU0F3SDdCK3JDLGdCQUFnQnhHLEdBSWhCcmxFO01qRDdvQ0wsR2lENm9DS0E7V0FIYUgsRUFHYkc7OzRCQUFLLE1BQUxBLE1BSGFILEVBR2JHO01BRlEsSUFBSjdFLEVBQUksV0FGUWtxRTtNQUdOLDBDQURObHFFLEVBRFMwRTtJQXpIZ0IsU0FnSTdCaXNFLFlBQVl6RyxHQUFHcm1FO01BQ2pCLE9BRGlCQTtlQUVDLE9BRkpxbUUsYUFHSSxrQkFISkEsWUFJSyxPQUpMQSxNQUk0QjtJQXBJWCxTQXdJN0IwRyxpQkFBaUJsc0M7TUFBVSxHQUFWQSxTQUVILElBQVRDLE1BRllELFdBRUgsT0FBVEMsTUFERyxPcEN0akNBbi9CLE9vQ3VqQ1c7SUExSVUsU0E2STdCcXJFLDBCQUEwQkM7TUFDNUIsU0FENEJBLE9BQ0s7TUFDckI7b0NBRmdCQTtPQUdoQixvQkFETmx1RTtPQUVVLGNBRlZBLE1BQ00sc0JBRE5BO01BRVUsVUFEVjBzRSxJQUNBbndCLFFBQ1E7SUFsSmlCLFNBNEp6QjR4Qiw4QkFHSjkxQyxFQUFFNEo7TWpEaHJDUCxJaURnckNPK0M7TUFBTztpQkFBUEE7UUFxQ2tDLGtCQXJDcEMzTTs7UUFBUyxPQUFQMk07aUJBS2tDLFVBTGxDQTtpQkFNa0MsVUFObENBO2lCQU9rQyxVQVBsQ0E7aUJBUWtDLFVBUmxDQTtpQkFTa0MsVUFUbENBO2lCQVVrQyxVQVZsQ0E7aUJBV2tDLFVBWGxDQTtpQkFZa0MsVUFabENBO2lCQWFrQyxVQWJsQ0E7aUJBY2tDLFdBZGxDQTtrQkFpQmtDLFdBakJsQ0E7a0JBa0JrQyxXQWxCbENBO2tCQW1Ca0MsV0FuQmxDQTtrQkFnQ2tDLFdBaENsQ0E7O1dBa0MyQixJQURMMW5DLEtBakN0QjBuQyxTQWlDZTlrQyxNQWpDZjhrQyxTQWtDMkIsZUFBVyxLQUR2QjlrQztXQUNZOztvQkFNN0JrdUUsc0NBeENBLzFDLE9BaUN3Qi82Qjs7b0JBT3hCOHdFLCtCQXhDQS8xQyxPQWlDd0IvNkI7a0JBbEJZLFdBZmxDMG5DO2tCQWdCa0MsV0FoQmxDQTtrQkEwQmtDLFdBMUJsQ0E7Ozs7YUE0QnNCO2NBRG9Cem5DLE9BM0IxQ3luQzs7Y0EyQmdDNk87Y0FDVixrQkFEVUEsT0FBVXQyQztjQTNCMUN5bkM7O1dBOEJzQjtZQURvQnhuQyxPQTdCMUN3bkM7O1lBNkJnQ3FQO1lBQ1Ysa0JBRFVBLE9BQVU3MkM7WUE3QjFDd25DOzs7V0FFRixJQURPd0wsU0FETHhMO1dBRUYsZ0JBQUlxcEM7YUFDRixTQUFJQyxNQUFNQztlQUFlLGtCQUgzQmwyQyxLQUVJZzJDLE9BQ1FFLGNBQThDO2FBQXhELDJCQUFJRCxNQUZDOTlCLFNBRzZCO2tCQWtCQSxXQXRCbEN4TDtrQkF1QmtDLFdBdkJsQ0E7a0JBd0JrQyxXQXhCbENBOztlQW1Da0J2bkMsT0FuQ2xCdW5DLFNBbUNhNWpDLElBbkNiNGpDO1dBeUVXLFVBdENFNWpDO1lBc0NGLE9BdENFQTt5QkFuQ2I0akMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DOztlQXdDcEIsZ0JBQUk0d0U7aUJBQ0YsU0FBSUMsTUFBTUM7bUJBQWUsa0JBNUUzQmwyQyxLQTJFSWcyQyxPQUNRRSxjQUE4QztpQkFBeEQsMkJBQUlELE1BekNjN3dFLE9BMENXOzBCQTdFN0J1bkMsTUFtQ2tCdm5DOztZQXNDUCxPQXRDRTJEO3lCQW5DYjRqQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7O2VBc0RlLElBQVYyQyxRQXREVmdCO2VBc0RvQjs7d0JBakRuQ2d0RTtvQ0F4Q0EvMUMsRUF5RnlCajRCLFFBdERMM0M7O3dCQUtwQjJ3RSwrQkF4Q0EvMUMsRUF5RnlCajRCLFFBdERMM0M7MEJBbkNsQnVuQyxNQW1Da0J2bkM7MEJBbkNsQnVuQyxNQW1Da0J2bkM7a0JBZmdCLFdBcEJsQ3VuQywrQkFxQ3VDO0lBcE1aLFNBdU03Qm9wQyxvQ0FHQS8xQyxFQUFFbjRCLE1BQU0raEM7TWpEM3RDYixJaUQydENPN2hDO01BQWE7aUJBQWJBO1NBcUI2Qjs7a0JBbkUzQit0RSxnQ0E4Q0o5MUMsRUFBUTRKO3VDQTlDSmtzQyx5QkE4Q0o5MUMsRUFBUTRKOztRQUFPLE9BQWI3aEM7aUJBUzZCLFlBVDdCQTtpQkFVNkIsWUFWN0JBO2lCQVc2QixZQVg3QkE7aUJBWTZCLFlBWjdCQTtpQkFhNkIsWUFiN0JBO2lCQWM2QixZQWQ3QkE7aUJBZTZCLFlBZjdCQTtpQkFnQjZCLFlBaEI3QkE7aUJBb0I2QixZQXBCN0JBOztXQXVCTztZQURrQjlDLEtBdEJ6QjhDO1lBc0JvQjFCLElBdEJwQjBCO1lBc0JlbkMsSUF0QmZtQztZQXVCTyxTQUFNLEtBREVuQyxLQUFLUztZQUVNLHNCQUR4QlgsR0FEdUJUO1lBdEJ6QjhDOztrQkFpQjZCLGFBakI3QkE7a0JBa0I2QixhQWxCN0JBO2tCQW1CNkIsYUFuQjdCQTs7V0FFRixJQURVb3dDLFNBRFJwd0M7V0FFRixnQkFBSWl1RTthQUNGLFNBQUlDLE1BQU1DO2VBQWUsa0JBSDNCbDJDLEtBRUlnMkMsT0FDUUUsY0FBOEM7YUFBeEQsaUNBQUlELE1BRkk5OUIsU0FERnZPLElBSXNDOztXQUU5QyxJQURrQndPLFdBTGhCcndDO1dBTUYsZ0JBQUlpdUU7YUFDRixTQUFJQyxNQUFNQztlQUFlLGtCQVAzQmwyQyxLQU1JZzJDLE9BQ1FFLGNBQThDO2FBQXhELGlDQUFJRCxNQUZZNzlCLFdBTFZ4TyxJQVFzQyxFQWdCUTtJQWxPekIsU0E0SnpCdXNDLG9CQUdKbjJDLEVBQUU0SjtNakRockNQLHVCaUQ2cUNTa3NDLHdCQUdKOTFDLEVBQUU0SjtJQS9KMkIsU0F1TTdCMnNDLDBCQUdBdjJDLEVBQUVuNEIsTUFBTStoQztNakQzdENiLHVCaUR3dENLbXNDLDhCQUdBLzFDLEVBQUVuNEIsTUFBTStoQztJQTFNcUIsU0FxUXpCNHNDLFdBR0p2SCxHQUFHcmxDLElBQUk2c0M7TWpEenhDWixJaUR5eENROXBDO01BQWU7aUJBQWZBO1FBd0pIOztRQXhKa0IsT0FBZkE7O1dBRUgsSUFESzFuQyxLQURGMG5DO1dBRUssWUFGUnNpQztXQUVBLElBQ0k5aUUsRUFBSSxXQUhSOGlFO1dBSVMsVUFETDlpRSxFQUNLLFdBSlQ4aUUsR0FDS2hxRSxLQURFd3hFOztXQU1QLElBRFV2eEUsT0FMUHluQztXQU1LLGlCQU5Sc2lDO1dBTUEsSUFDSWpyRCxJQUFJLFdBUFJpckQ7V0FRUyxVQURManJELElBQ0ssV0FSVGlyRCxHQUtVL3BFLE9BTEh1eEU7O29CQUFKOXBDOzs7O2VBV1k7Z0JBRDBCdm5DO2dCQUFaZ0Q7Z0JBQ2QsZ0NBRGNBO2dCQUNkOzs7MEJBQ05zaEMsWUFBUXVsQzttQkFBSyxzQkFEbEJvRixLQUNLM3FDLE1BQVF1bEMsR0FBb0M7Z0JBRHRDLGFBQU50bkUsSUFEZ0N2QztlQUMxQjt3QkFYZjZwRSxHQWFJMEgsU0FiR0YsZUFZSEMsT0FweEJKaEg7Ozs7O2tCQXV4QjBEcnFFOztrQkFBWGdvQztrQkFDM0N3cEM7NEJBQUtudEMsWUFBUXVsQyxJQUFLLHdCQUFidmxDLE1BQVF1bEMsR0FBb0M7aUJBQ25DOzBCQWpCbEJBOzBCQWlCa0IsV0FGNkI1aEMsTUFBV2hvQzswQkFmbkRveEU7OzswQkFnQkhJOzBCQXh4QkpuSDs7Z0JBMnhCMERwcUU7O2dCQUFYeXZDO2dCQUMzQytoQzswQkFBS3B0QyxZQUFRdWxDLElBQUssd0JBQWJ2bEMsTUFBUXVsQyxHQUFvQztlQUNuQzt3QkFyQmxCQTt3QkFxQmtCLFdBRjZCbDZCLE1BQVd6dkM7d0JBbkJuRG14RTs7O3dCQW9CSEs7d0JBNXhCSnBIOzs7WUEreEJhdnFFLE9BdkJWd25DO1lBd0JDMXlCLGNBQUt5dkIsWUFBUXVsQyxJQUFLLHFCQUFidmxDLE1BQVF1bEMsR0FBOEI7a0JBcUkvQzJILGVBN0pBM0gsR0F1QmE5cEUsT0F2Qk5zeEUsZUF3Qkh4OEQsS0FoeUJKeTFEOzs7WUFteUJrQm5xRSxPQTNCZm9uQztZQTJCVWxtQyxJQTNCVmttQztZQTRCQ29xQyxnQkFBS3J0QyxZQUFRdWxDLElBQUssd0JBQWJ2bEMsTUFBUXVsQyxHQUE4QjtrQkFpSS9DMkgsZUE3SkEzSCxHQTJCa0IxcEUsT0EzQlhreEUsUUEyQk1od0UsTUFDVHN3RSxPQXB5QkpySDs7V0F1eUJRO1lBRGVscUUsT0E5QnBCbW5DO1lBOEJjaG1DLEtBOUJkZ21DO1lBOEJTam1DLE1BOUJUaW1DO1lBOEJFOWxDLE1BOUJGOGxDO1lBK0JLLGdDQUEyQixjQUQ5QjlsQztZQUNHO3NCQUNDNmlDLFlBQVF1bEM7ZUFBSywyQkF6dkJaemYsS0F5dkJEOWxCLE1BQVF1bEMsR0FBbUM7V0FDUDtvQkFqQzdDQTtvQkE4QnVCenBFO29CQTlCaEJpeEU7b0JBOEJLL3ZFO29CQUFLQztvQkFFYnF3RTs2QkF6dkJXL0g7c0JBQThDLDBCQUEzQixrQkFBeEJ6ZixLQUFLeWY7O1dBNHZCUDtZQURpQnhwRSxPQWxDdEJrbkM7WUFrQ2dCN2xDLE9BbENoQjZsQztZQWtDVy9sQyxNQWxDWCtsQztZQWtDSTNsQyxRQWxDSjJsQztZQW1DSyxrQ0FBMkIsY0FENUIzbEM7WUFDQztzQkFDQzBpQyxZQUFRdWxDO2VBQUssMkJBeHVCVmdJLE9Bd3VCSHZ0QyxNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBckM3Q0E7b0JBa0N5QnhwRTtvQkFsQ2xCZ3hFO29CQWtDTzd2RTtvQkFBS0U7b0JBRWZvd0U7NkJBeHVCYWpJO3NCQUFnRCwwQkFBM0Isa0JBQTFCZ0ksT0FBS2hJOztXQTJ1QlQ7WUFEcUJ0cEUsT0F0QzFCZ25DO1lBc0NvQjFsQyxPQXRDcEIwbEM7WUFzQ2U1bEMsTUF0Q2Y0bEM7WUFzQ1F4bEMsUUF0Q1J3bEM7WUF1Q0ssa0NBQTJCLGNBRHhCeGxDO1lBQ0g7c0JBQ0N1aUMsWUFBUXVsQztlQUFLLDJCQTd1Qk5rSSxPQTZ1QlB6dEMsTUFBUXVsQyxHQUFtQztXQUNQO29CQXpDN0NBO29CQXNDNkJ0cEU7b0JBdEN0Qjh3RTtvQkFzQ1cxdkU7b0JBQUtFO29CQUVuQm13RTs2QkE3dUJpQm5JO3NCQUFvRCwwQkFBM0Isa0JBQTlCa0ksT0FBS2xJOztXQWd2QmI7WUFEaUJwcEUsT0ExQ3RCOG1DO1lBMENnQnZsQyxPQTFDaEJ1bEM7WUEwQ1d6bEMsTUExQ1h5bEM7WUEwQ0lybEMsUUExQ0pxbEM7WUEyQ0ssa0NBQTJCLGNBRDVCcmxDO1lBQ0M7c0JBQ0NvaUMsWUFBUXVsQztlQUFLLDJCQS91QlZvSSxPQSt1QkgzdEMsTUFBUXVsQyxHQUFtQztXQUNQO29CQTdDN0NBO29CQTBDeUJwcEU7b0JBMUNsQjR3RTtvQkEwQ092dkU7b0JBQUtFO29CQUVma3dFOzZCQS91QmFySTtzQkFBZ0QsNEJBQTNCLGtCQUExQm9JLE9BQUtwSTs7a0JBbXNCZHRpQzs7O2tCQThDMEM1bUMsUUE5QzFDNG1DLFNBOENvQytMLE9BOUNwQy9MLFNBOEMrQm5sQyxNQTlDL0JtbEM7cUJBNkpIaXFDO3VCQTdKQTNIO3VCQThDNkNscEU7dUJBOUN0QzB3RTt1QkE4QzJCanZFO3VCQUFLa3hDO3VCQS9idkN5N0I7dUJBdFVBakM7OztrQkEwd0I0Q2xzRSxRQW5EekMybUMsU0FtRG1Da00sT0FuRG5DbE0sU0FtRDhCamxDLE1BbkQ5QmlsQztxQkE2SkhpcUM7dUJBN0pBM0gsR0FtRDRDanBFLFFBbkRyQ3l3RSxRQW1EMEIvdUUsTUFBS214QyxPQXpnQnRDMjZCLGVBalFBdEI7O2tCQXd3QmtCcHNFLFFBakRmNm1DLFNBaURTcGxDLE9BakRUb2xDLFNBaURJdGxDLE1BakRKc2xDO3FCQTZKSGlxQzt1QkE3SkEzSCxHQWlEa0JucEUsUUFqRFgyd0UsUUFpREFwdkUsTUFBS0UsT0F2aUJaNnJFLFdBak9BbEI7OztZQTR3Qldqc0UsUUFyRFIwbUM7WUFxREc3a0MsTUFyREg2a0M7WUFzREM0cUM7aUNBQVN0STtlQXZPUDtvQ0F1T09BO2dCQXZPUDt5QkFLSjlpRTs7K0JBQ0EsVUFDRSx5QkFGRkE7ZUFHSixxQkFQSXVtQixFQXNPV3U4QyxHQUFpQjtrQkF1RzlCMkgsZUE3SkEzSCxHQXFEV2hwRSxRQXJESnd3RSxRQXFERDN1RSxRQUNGeXZFLE9BNXpCSnhGOztXQTYwQkEsSUFETTlwRSxRQXRFSDBrQztXQXVFQSxnQkF2RUhzaUMsU0FBR3RpQyxNQXNFRzFrQztXQUVEOztlQUVnQkMsUUExRWxCeWtDLFNBMEVhVCxNQTFFYlM7V0EyRUgsc0JqRHAyQ0wsT2lEMGZTa2xDLFdBK3hCSjVDLFVBMEVnQi9pQztlQTFFYlMsTUEwRWtCemtDOzs7ZUFHRkMsUUE3RWhCd2tDLFNBNkVXL2tDLElBN0VYK2tDO1dBOEVILFdBOUVBc2lDLEdBNkVjcm5FO2VBN0VYK2tDLE1BNkVnQnhrQzs7O2VBSVNFLFFBakZ6QnNrQyxTQWlGa0I5a0MsTUFqRmxCOGtDLFNBaUZTbEQsUUFqRlRrRDtXQWtGSyxpQkFBaUIsaUJBRGJsRCxTQWpGWndsQztXQW1GUSxJQUFKeGxFLEVBQUksYUFuRlJ3bEU7V0FtRlE7YUFFRixnQ0FGRnhsRSxFQUZpQjVCLE9BR2pCc3RDOzs7O2FBRWtCLGVBRmxCQSxNQUVrQixVQUFQcmdDO1dBRUosVUFKUHFnQyxNQUlPLFdBeEZYODVCLEdBaUY0QjVtRSxRQWpGckJvdUU7O2VBeUZ1Qmx1RSxRQXpGM0Jva0MsU0F5Rm9CNWtDLFFBekZwQjRrQyxTQXlGVzlDLFVBekZYOEM7V0EwRkssaUJBQWlCLGlCQURYOUMsV0F6RmRvbEM7V0EyRlEsSUFBSmoxRCxJQUFJLGFBM0ZSaTFEO1dBMkZRO2FBR2M7MENBSGxCajFEO2NBR2tCO2NBQ0MsNEJBSm5CQTtjQUltQjtjQWNuQixrQkFkWW04QixNQWNLLFVBQVcsS0FwQlRwdUM7Y0FtQm5CLGlCQWRZZ3VDLE1BY0ksVUFuQkdodUM7Y0FHZDR0QztjQUFMSjs7O21DQW9CSjthQUZzQjs7NkJBQVArWDtjQWxCTjNYO2NBQUxKO1dBcUJFO3NCQXJCRkEsTUFEQXY3QjttQkFzQkUsV0FqSE5pMUQsR0FpSG9CLFdBckJYdDVCLE1BSHFCcHRDLFNBekZ2Qmt1RTtrQkF5RFA7a0JBRUE7O1dBNEU0QjtZQURJanVFLFFBdEk3Qm1rQztZQXNJYTdvQyxlQXRJYjZvQztZQXVJeUIsOEJBRFo3b0M7V0FDaEIsc0JqRGg2Q0wsT2lEMGZTK3RFLFdBK3hCSjVDO1dBdUk0QixJQXZJekJ0aUMsTUFzSTZCbmtDOzs7b0JBdEk3Qm1rQzs7aUJBeUkwQ2hrQyxRQXpJMUNna0MseUJBeUkrQnNLO2FBQ2xDLFdBMUlBZzRCO2FBMEltQixXQTFJbkJBO2FBMkljLHNCQUZvQmg0QixNQUFXdHVDLFNBekkxQ2drQzs7ZUE0STBDOWpDLFFBNUkxQzhqQyx5QkE0SStCOEs7V0FDbEMsV0E3SUF3M0I7V0E2SW1CLFdBN0luQkE7V0E4SWMsc0JBRm9CeDNCLE9BQVc1dUMsU0E1STFDOGpDOzs7V0ErREgsSUFET3dMLFNBOURKeEw7V0ErREgsR0EvRE84cEM7YUFpRUs7Y0FESVAsYUFoRVRPO2NBZ0VDVCxPQWhFRFM7Y0FpRUssYUFESlQsT0FoRVIvRzthQWtFYSxVQURMcmxFLEVBQ0ssV0FsRWJxbEUsR0E4RE85MkIsU0FFUys5QjtXQUlaOztvQkFwRUR2cEM7O2FBb0hZO2NBRGlEM2pDO2NBQVp3dUU7Y0FBMUJsdUMsV0FuSHZCcUQ7Y0FvSFksa0NBRHFDNnFDO2NBQ3JDOztjQUNIO2FBQ1osdUJBSDBCbHVDLGNBQ3RCbXVDLE9BQ0E1NkIsUUFySEpveUI7YUFvSGUsSUFHUCxpQkF2SFJBLElBdUhRLGVBSENuaUMsTUFEdUQ5akM7YUFNdkQsVUFGTDB1RSxJQUVLLFdBekhUekksR0F3SEkwSSxXQXhIR2xCO1dBMkhLO1lBRHdCM3RFLFFBMUhqQzZqQztZQTBIdUJsa0MsU0ExSHZCa2tDO1lBMkhTO1dBQ1osdUJBRjBCbGtDLFdBQ3RCaWhDLE1BM0hKdWxDO1dBMkhZLElBRVIzeUMsSUFBSSxhQTdIUjJ5QztXQThIUyxVQURMM3lDLElBQ0ssV0E5SFQyeUMsR0EwSG9Dbm1FLFFBMUg3QjJ0RTs7V0FnSUs7WUFEZW4zQixRQS9IeEIzUztZQStIZS9qQyxRQS9IZitqQztZQWdJUyxrQkFoSVpzaUMsR0ErSGtCcm1FO1dBRUwsVUFEVHU2QixNQUNTLFdBakliOHJDLEdBK0gyQjN2QixRQS9IcEJtM0I7O1dBbUlQLFlBbklHOXBDLFNBbUlLLHNCQW5JUnNpQztXQW9JUyxVQURMaHJELElBQ0ssV0FwSVRnckQsR0FrSWUxdkIsUUFsSVJrM0I7O1dBaUpxQjtZQURSbUIsUUFoSmpCanJDO1lBZ0pZNWpDLElBaEpaNGpDO1lBaUp5Qix1Q0FEYjVqQyxJQUFLNnVFO1lBQ1E7WUFDaEIsbUJBbEpaM0ksR0FpSnFCaDNCLE9BakpkdytCO1dBa0pLLFlBQ1ksSUFBYm9CLG9CQUFhLE9BQWJBO1dBQ0Y7a0JBdkZULG1EQTJGRztJQWhhMEIsU0FxYTdCakIsZUFNQTNILEdBQUdybEMsSUFBSTZzQyxRQUFRaHdFLElBQUlFLEtBQUtzVCxLQUFLNmtEO01BQVMsVUFBdkJyNEQ7a0JBQUlFO1VBd0JuQixHQXhCbUJBLEtBd0JuQjtVQXRCUSxXQUZnQnNULEtwQ3gxQ2hCMVAsZ0JvQ3cxQ1Iwa0U7VUFHUSxJQUFKcmxFLEVBQUksV0FIcUJrMUQsTUFBN0JtUTtVQUlTLFVBRExybEUsRUFDSyxXQUpUcWxFLEdBQUdybEMsSUFBSTZzQztRQU1QLElBRDBCcCtELEVBTFAxUjtRQU1YLFdBTmdCc1QsS3BDeDFDaEIxUCxRb0M2MUNrQjhOLEVBTDFCNDJEO1FBTUEsSUFDSW5zRCxJQUFJLFdBUHFCZzhDLE1BQTdCbVE7UUFRUyxVQURMbnNELElBQ0ssV0FSVG1zRCxHQUFHcmxDLElBQUk2c0M7O1FBQStCLFNBQXZCaHdFOzs7c0JBQUlFO2NBb0JuQixHQXBCbUJBLEtBb0JuQjtjQVZRLFdBVmdCc1QsVXBDeDFDaEIxUCxRb0N3MUNSMGtFO2NBV1EsSUFBSjNpQixJQUFJLFdBWHFCd1MsTUFBN0JtUTtjQVlTLFVBREwzaUIsSUFDSyxXQVpUMmlCLEdBQUdybEMsSUFBSTZzQztnQkFheUNyNEIsSUFiN0J6M0M7WUFjWCxXQWRnQnNULFVBYXdCbWtDLElBYmhENndCO1lBZVEsSUFBSnhpQixJQUFJLFdBZnFCcVMsTUFBN0JtUTtZQWdCUyxVQURMeGlCLElBQ0ssV0FoQlR3aUIsR0FBR3JsQyxJQUFJNnNDO1VBa0JQO1FBSUEsK0NBRTBDO0lBbmNiLFNBMGM3QnFCLE9BQU83SSxHQUFHOEk7VUFBaUJwd0UsYUFBTGlpQztlQUNoQm91QyxNQUNGL3VFLEVBQUVnbUQ7WUFBRm5ELE1BQUVtc0I7UUFBUTthQUFSQTtZQUNpQjthQUFaN3VFLEVBREw2dUU7YUFDRXJ1RSxFQURGcXVFO2FBQ2lCLGVBRG5CbnNCLElBQ0lsaUQ7YUFESmtpRDthQUFFbXNCLE9BQ0s3dUU7O1VBQ0YsT0FGTDBpRCxJQUVNO2VBRVI5ckIsRUFBRXkyQyxRQUFReHRFO1FBQ1osWUFQT2dtRTtRQU9QO1VBQ2UsdUJBUlJBLEdBQWVybEMsSUFNbEI2c0M7Y0FHQXlCOzs7Ozs7Ozs7Ozs7Ozs7OzthQUNpQnBqRSxJQURqQm9qRTs7Y0FFQTtnQkFBWSxJQURLcGpFLElBQ0Usa0JBQWtCLGNBWGRuTjs7VXpDMzhCdkIsMEJ5Q285QkF1d0U7OzBCQUlhLElBQVJqcEIsYUFBUSxhQVBMaG1ELEVBT0hnbUQ7UUFDTSxJQUFQaXBCO1FBQU8sa0JBZExILEdBQUg5SSxHQWNDaUosSUFBZ0I7YUE1VHBCL0Isb0JBb1RGbjJDLEVBTm9CNEo7SUExY08sU0ErZDdCdXVDLE9BQU9sSixHQUFHcmxDLEtBQU0sY0FBVHFsQyxHQXZXUHdHLGdCQXVXVTdyQyxJQUFvQztJQS9kakIsU0FpZTdCd3VDLFFBQVEzdUUsRUFBRXN1RSxHQUFHbnVDLEtBQWMsNEJBQW5CbmdDLEdBQUVzdUUsR0FBR251QyxJQUE2QztJQWplN0IsU0FrZTdCeXVDLE9BQU81dUUsRUFBRW1nQztNQUFjLDRCQUFoQm5nQyxHQTFXUGdzRSxnQkEwV1M3ckMsSUFBMEQ7SUFsZXRDLFNBb2U3QjB1QyxNQUFNMXVDLEtBQU0sY0E5bkNWNm1DLE1Ba3hCRmdGLGdCQTRXTTdyQyxJQUErQztJQXBleEIsU0F5ZTdCMnVDLGNBR0V0SixHQUFHdUosT0FBT3Z2RTtNQUNKLGlCcEMxNUNBc0IsUW9DeTVDTjBrRTtNQUVRLElBQU50bkUsSUFBTSxhQUZSc25FO01BRVE7UUFFSixpQ0FGRnRuRSxJQUZDNndFLFFBR0Q1dUM7Ozs7UUFFa0IsZUFGbEJBLElBRWtCLFVBQVA5MEI7TUFDZixrQkFOWTdMLEVBR1IyZ0MsSUFHRTtJQWxmdUIsU0FxZjdCNnVDLGNBR0VodkUsRUFBRSt1RSxPQUFPdnZFO01BQW1CLG1DQUE1QlEsR0FBRSt1RSxPQUFPdnZFLEVBQW9EO0lBeGZsQyxTQTJmN0J5dkUsbUJBQW1CanZFLEVBQUVtZ0M7TUFDdkIsY0FBd0RoZ0MsR0FBSyxPQUFMQSxDQUFNO01BQWhELGdDQUFRLGNBRERILFlBQUVtZ0MsU0FDd0M7SUE1ZmhDLFNBK2Y3Qit1QyxVQUFVbHZFO01BQ1osY0FBcUNHLEdBQUssT0FBTEEsQ0FBTTtNQUFwQyxvQ0FBUSxJQURISCxzQkFDZ0M7SUFoZ0JiLFNBb2dCN0JtdkUsUUFBUXByRSxHQUFHdXFFLEdBQUdudUMsS0FBYyxnQ0FBcEJwOEIsSUFBR3VxRSxHQUFHbnVDLElBQW9EO0lBcGdCckMsU0FxZ0I3Qml2QyxPQUFPcnJFLEdBQUdvOEI7TUFBYSxnQ0FBaEJwOEIsSUE3WVBpb0UsZ0JBNllVN3JDLElBQWdFO0lBcmdCN0M7Ozs7UUExcEIzQjZtQztRQWFBRztRQUNBQztRQU1BRTtRQVBBSDtRQUNBQztRQXRIQVg7UUFXQUM7UUE2R0FXO1FBMUxBMUI7UUFPQUM7UUFFQUM7UUFpS0FtQjs7T0F5bkNGMEg7T0FHQUU7T0FFQUM7T0ExQkFSO09BdUJBTTtPQVFBRztPQVlBRTtPQU1BQztPQUlBQztPQU1BRTtPQURBRDtJQXBnQjZCO2FDNS9CN0JFLFNBQVM1c0UsS0FBSy9DLEdBQ2hCLGlDQURXK0MsS0FBSy9DLEVBQ3NCO2FBRXBDNHZFLG1CQUFtQjdzRSxLQUNqQjBzQjtNQUNVLElBQVZ4a0IsS0FBVSxhQURWd2tCO01BRUosaUNBSHFCMXNCLEtBRWpCa0ksS0FDMEI7MkJBTjVCMGtFLFNBR0FDOztvQkNBS2xrRSxHQUNVLElBQWJta0UsSUFBYSxVQUNqQixzQkFESUEsSUFDSTtRQVlOQyx3QkFVQUMsc0JBT0FDO2lDQWVvQjF2RTtNQUN0QiwwQ0FEc0JBLFdBQ3RCOztZQUNBMUU7UUFDRTtVQUFnQyx5QkFIWjBFLEVBRXRCMUU7VUFDa0MsaUJBRjlCb0o7VUFFOEIsU0FEbENwSjs7O01BSUEsVUFMSW9KO01BQUosSUFPSWlyRSxpQkFQQWpyRTtNQVNKLE9BRklpckUsR0FFSzthQUsyQkMsV0FBU3p2RSxFQUFLQyxHQUFJLDJCQUFURCxFQUFLQyxFQUFlO3lDQUE3Qnd2RTthQUlBQyxXQUFTMXZFLEVBQUtDLEdBQUksMkJBQVRELEVBQUtDLEVBQWU7SUFnQ3hDO3VDQWhDV3l2RTtLQUdEQzs7S0FnQmpDQyxvQkFyREFMO0tBK0RBTTtLQUd1QjthQUluQkUsU0FBU3B3RSxHQUNmLFdBRGVBLEVBRWYsVUFGZUEsNkJBRU87SUFORyxTQVF2QnF3RSxVQUFVQztNQUNaOztXQURZQTtPQUdFLHdCQURWL3NFLHFCQVZGNHNFO01BWUYsaUJBRElJLGdCQURBaHRFO01BREosV0FJc0IsU0FIbEJBO01BR0osaUJBRklndEU7TUFGSixJQUlBLEtBSElodEUsWUFHSjs7WUFDQS9IO1FBQXdCO1VBQXlCO2lCQUFqREE7V0FBaUQsc0JBTnJDODBFLFdBTVo5MEU7VUFBd0IsaUJBSHBCKzBFO1VBRzZDLFNBQWpELzBFOzs7TUFDQSxVQXhGRW0wRSxvQkFvRkVZLHVDQVcwQjtJQXRCTCxTQXdCdkJDLFNBQU9DLE1BQU1DO01BQ2YsYUFEU0Qsb0JBQ1QsS0FBSUUsV0FEV0Q7TUFDZjtRQUVpQixJQUFYRSxTQUFXLGVBSEZGLFNBeEJiUDtRQTRCQSxPQUpPTSxXQUdIRyxXQUZGRDtRQUdGLFdBRElDO1FBQVc7OztNQWxCakIsV0FxQkU7SUE5QnVCO2FBNEN2QkcsV0FBV0M7TUFDYixJQUFJbGQsTUFEU2tkO01BRWIsU0FGYUEsTUFDVGxkO01BQ0osT0FESUEsS0FFQztJQS9Db0IsU0FpRHZCbWQsaUJBQWlCRCxNQUFNcnVFO01BQ3pCO1FBQ0UsOEJBRnVCQSxLQUFOcXVFOzs7O1VBSUwsSUFBUkUsTUFBUSxXQUpLRjtVQUtRLCtCQUxGcnVFLEtBSW5CdXVFLE1BSmFGO1VBTVMsOEJBRnRCRSxRQUphRjtVQU1TLE9BRnRCRTtRQVJOLFdBV087SUF4RGtCLFNBMER2QkMsa0JBQWtCSCxNQUFNSTtNQUNoQiw0Qm5EcExiLE9tRDBLS0gsaUJBU2tCRCxhQUFNSSxNQUNjO0lBM0RmLFNBNkR2QkMsV0FBV0wsTUFBTUUsTUFBTUk7TUFDekI7TUFDRywyQkFGZ0JKLE1BQU5GO2dCQTVCYixTQTRCYUEsTUFBTUU7Z0JBM0JuQixpQkEyQmFGLFNBQU1FOztnQkFBTUk7O2dCQUFaTixpQkFBTUUsTUFBTUksU0FBWk4sWUFLaUQ7SUFsRXJDLFNBb0V2Qk8sV0FBV1AsTUFBTUU7TUFDbkI7UUFBSSxlQURlQSxNQUFORjs7OztTQUVLLHdCQUZMQSxTQUFNRTttQkFFb0I7SUF0RWQsU0F3RXZCTSxVQUFRQyxLQUNWLGFBRFVBLE1BQ3FCLFVBRHJCQSxJQUNzQztJQXpFdkIsU0EyRXZCQyxPQUFPVixNQUFNVyxLQUFLQyxXQUFXQztNQUNwQjt3QkFESUY7T0FFRSx1QkFGR0M7T0FHRix3QkFIYUM7T0FJVjs7eUJuRHhNeEIsT21EMEtLWixpQkEwQk9ELGFBRUxlO09BR2tCOzt5Qm5Eek16QixPbUQwS0tkLGlCQTBCT0QsYUFHTGdCO01BRWtCOzs7VUFMYmhCLG9DQUlMaUIsZUFIQUg7T0FES2Q7TUFDRSxJQUlXLGtCQUxiQTtNQUthLGNBT2JtQixJQUFJMW5FLEtBQUsybkU7UUFDVCxXQURBRCxJQVhMTCxRQVk0QixtQkFEdkJLLElBQUkxbkUsS0FBSzJuRSxZQUNnRDtNQUZoRTs7TUFNRjtpQkFDT0csSUFBSXJCO1VBQ0ssaUNBRFRxQixJQUFJckIsTUFIUG1CO1VBSVksU0FIWkM7VUFHWTtZQUdELDZCQUpKcEIsTUFsQkZGOzs7OztVQXFCRCxpQ0FIR0U7VUFHSCxRQUVXO1FBcEJmYztRQUVBRTtNQW9CSjtpQkFDT0ssSUFBSXJCO1VBQ0ssaUNBRFRxQixJQUFJckIsTUFYUG1CO1VBYWEsaUNBRk5uQixRQVZQb0I7VUFZYSxRQUE4QjtRQTFCM0NQO1FBRUFFO01BcUJKLFdBVklJO01BVUosV0FUSUM7TUFMRixJQWNGLFlBekJTdEI7TUFpQ047OztpQkFDT3VCLElBQWtCQztVQUF2QixJQUFPTCxJQUFGSSxPQUNDLFdBRENKLElBOUJSRixnQkE4QndCTyxNQUFsQkQsSUFBa0JDLEdBQ2dDOzs7TUFGekQsUUFJSTtJQWhIa0IsU0FrSHZCQyxNQUFNekI7TUFFTjtnQkFGTUE7T0FFTjs7Ozs7O01BRXVCLGNBSmpCQTtNQU1MOzs7aUJBQ085d0UsRUFBRU47VUFBZ0IsNkJBQWhCQSxFQVBKb3hFO1VBT29CLDBCQUFoQnB4RSxPQUFGTSxFQUE0QztRQU5Wd3lFO1FBQXdCZjtNQUtqRSxXQUxFVTtNQUtGLFdBTFdDO01BQ1osU0FGTXRCO01BWUw7OztpQkFDT3VCLElBQWtCQztVQUF2QixJQUFPTCxJQUFGSSxPQUNDLFdBRENKLElBWjRDUCxZQVk1QlksTUFBbEJELElBQWtCQyxHQUM0Qjs7UUFiaENHO01BV3JCLFFBSW9CO0lBbElFLFNBb0l2QkMsU0FBUzVCO01BQ1gsSUFBSWxkLE1BRE9rZCxTQUNYLFdBQUlsZCxjQUFKLE9BQUlBLEtBRUM7SUF2SW9CLFNBeUl2QitlLGFBQWE3QixNQUFNcnVFO01BQ3JCO1FBQUksNkJBRGlCQSxLQUFOcXVFOzs7O1VBR0QsSUFBUmxkLE1BQVEsU0FIQ2tkO1VBSVYsd0JBSmdCcnVFO1dBSWMsOEJBSmRBLEtBR2ZteEQsTUFIU2tkO1VBS2IsT0FGSWxkO1FBUE4sV0FTTztJQTlJa0IsU0FnSnZCZ2YsU0FBU3JCLEtBQ1Isa0JBRFFBLGNBQzRCO0lBakpkLFNBbUp2QnNCLHNCQUFzQi9CLE1BQU1nQyxNQUFNQztNQUN4Qjt3QkFEa0JEO09BQ2xCLE9BQVJFO09BQVEsTUFEd0JEO09BRzFCLG1CQURORSxTQUFnQ0M7T0FDMUIsS0FETkQ7T0FDTTs7WUFDVnB4RTtRQUNFO1VBQVc7OzZCQUxXaXZFLE1BS1ksaUJBSmhDa0MsUUFHSm54RTtVQUNFLGlCQUZFZ0QsSUFDSmhEO1VBQ2EsU0FEYkE7OztNQUhZLElBTVosS0FMb0NxeEUsY0FLcEM7OztRQUNFO1VBQWtCO2dCQURwQjUzRSxJQUxJMjNFO1dBTWdCLGtCQVJJbkMsTUFRZSxpQkFSSGlDLEtBT3BDejNFO1VBQ0UsaUJBTEV1SjtVQUtnQixTQURwQnZKOzs7TUFHQSxPQVBJdUosR0FPRDtJQTdKc0IsU0ErSnZCc3VFLGFBQWFyQyxNQUFNcnVFO01BQ3JCO1FBQUksNkJBRGlCQSxLQUFOcXVFOzs7OEJBQ2lDO21CQUFZO0lBaEtuQyxTQWtLdkJzQyxjQUFjdEMsTUFBTUk7TUFDWiw0Qm5ENVJiLE9tRHdSS2lDLGFBR2NyQyxhQUFNSSxNQUNjO0lBbktYLFNBcUt2Qm1DLGdCQUFnQnZDLE1BQU10eEUsR0FDeEIsY0FEd0JBLEVBQU5zeEUsVUFDbEIsUUFBMkM7SUF0S2xCLFNBbUx2QndDLGFBQWFDO01BQ2YsU0FEZUEsZUFDbUI7TUFFdkI7c0NBSElBO09BSUgsZ0JBRFJDO01BRUo7aUJBQ09sNEUsRUFBRSsyRTtVQUNMLElBQUlKLEtBREQzMkU7VUFFdUIsK0JBRnJCKzJFLElBQ0RKLElBSEpuQjtVQUswQiw4QkFGdEJtQixNQUhKbkI7VUFLMEIsUUFBd0M7UUFUdkR5QztNQUtmLE9BREl6QyxLQU9DO0lBOUxvQixTQWdNdkIyQyxXQUFXM0M7TUFDYixxQkExSkVGLG9CQXlKV0U7TUFFUyxlQUZUQTtNQUdXO2VBSFhBO3FCQUdXLGlCQUhYQSx1Q0FHa0Q7SUFuTXRDLFNBcU12QjRDLFNBQVNDLElBQUlaLEtBQUtyQixXQUFXQyxrQkFBK0I5NUM7VUFBTHBLLGFBQVZtbUQ7TUFDL0MsT0FEV0QsSUFBSVosS0FBS3JCLFdBQVdDO01BQy9CLElBQ0k5aEUsS0FGMERnb0IsSUFHaEQsV0FIaUMrN0MsUUFBcENELElBQThDbG1ELEtBR2YsV0FIS21tRCxRQUFwQ0Q7TUFJWCxNQUpXQTtNQUNYO09BR0E7T0FNSyxjQVYwQmhDO09BUTVCOzs7b0JBQ09rQyxJQUEyQixrQkFUMUJGLElBUzBCLGlCQVQxQkEsSUFTREUsSUFBK0Q7O09BRmxDLGNBUHhCZDtNQU1aOzttQkFKQ2xqRTs7aUJBS00scUJuRHJVYixPbUR3UktzakUsYUFzQ1NROztJQXJNYyxTQWlOdkJHLFdBQVdDLFVBQVVDO01BQ1gsdUJBRENELFdBRUUsb0JBRlFDLFdBQ25CbEQ7TUFFSixXQUZJQTtNQUdILHFCQUZHbUQsWUFGbUJELFdBRW5CQyxXQUVxRDtJQXJOaEMsU0EwTnZCQyxpQkFBaUJILFVBQVVDLFdBQVdHO01BQzVCLHVCQURPSixXQUVKLG9CQUZjQyxXQUN6QmxEO01BRUosV0FGSUE7TUFFSixnQkFINkJrRDtNQUc3QixnQkFESUM7TUFDSixRQUUrQjtJQS9OTixTQWlPdkJHLFlBQVlDO01BQ2QsU0FBSUMsYUFBaUIsb0NBRFBELElBQzZDO01BQTNELFVBQUlDLG9CQUN1QztJQW5PbEIsU0F1T3ZCQyxjQUFjekQ7TUFFTixJQUFOdG1FLElBQU0sbUJBRk1zbUU7TUFJaEIsU0FKZ0JBO01BS1Isc0JBSEp0bUUsSUFHZ0I7SUE1T0ssU0E4T3ZCZ3FFLGtCQUFrQkMsTUFBTTNEO01BQzFCLEdBRG9CMkQsTUFDYSxPQURiQTtNQUdSLElBQU5qcUUsSUFBTSxtQkFIY3NtRTtNQUt4QixTQUx3QkE7TUFNaEIsc0JBSEp0bUUsSUFJSDtJQXJQc0IsU0F1UG5Ca3FFLE9BQU9scUU7TW5EaFhoQjs7O2NtRG1YUTVJLGFBQUhwQztVQUFRLFdBQVJBLEVBSFdnTDtzQkFHUjVJOztRQURLO0lBelBlLFNBNFB2Qit5RSxpQkFBaUJucUUsSUFBSXNtRTtNQUN2QixVQUR1QkEsU0FDdkIsV0FBSThEO01BQUosWUFFRSxPQUhpQnBxRSxJQUNmb3FFLFdBRWM7SUEvUE8sU0FpUXZCQyxxQkFBcUJKLE1BQU1qcUUsSUFBSXNtRTtNQUNqQyxHQUR1QjJELE1BQ1UsT0FESmpxRTtNQUNhLElBQ3BDb3FFLE1BRjJCOUQ7TUFDUyxTQUNwQzhELE1BQ2dCLE9BSE9wcUUsSUFFdkJvcUU7TUFDZ0MsT0FIVHBxRSxHQUsxQjtJQXRRc0IsU0F3UXZCc3FFLCtCQUFtQ0wsTUFBTTNEO01BQzNDLEdBRHFDMkQsTUFDSixPQURJQTtNQUV6QixJQUFOanFFLElBQU0sY0FGK0JzbUU7TUFHekMsaUJBREl0bUUsSUFGcUNzbUU7TUFHekMsT0FESXRtRSxHQUdIO0lBN1FzQixTQXdTdkJ1cUUsV0FFSzk3RDtNQUZNLEdBRU5BLE1BQVUsT0FBVkEsU0FESSw2QkFDaUI7SUExU0gsU0ErU3ZCKzdELFdBQVdsMUUsRUFBRW0xRSxLQUFLN21EO01BQ3BCLHVCQUFJdnBCLEtBQUo7WUFEYS9FO1lBR2J4RTtRQUNFO21CQUZFcUU7VUFFZSwyQkFKSnMxRSxLQUdmMzVFO1VBQ0UsU0FERkE7YUFIYXdFLE1BR2J4RTs7TUFGQSxTQUNJcUU7TUFsQmtCLEdBZ0JGeXVCLFFBZEgsd0JBZWJ2cEI7TUFoQk8sNkJBc0JSO0lBdFRzQixTQTJVdkJxd0UsY0FBY0MsS0FuQklGO01Bb0JkLElBcEJtQkcsU0FvQm5CLFdBRFVEO01BQ1YsR0FwQm1CQztRQXNCdkIsUUF0QmtCSCx3QkFBRjM1RSxNQUFPOHlCOztRQUN6QjtrQkFEa0I5eUI7WUFFUix5QkFGVTI1RSxLQUFGMzVFLFVBR0UrNUUsU0FIS2puRDtZQUl2QjtjQXZCVSxHQXNCUWluRDttQ0FEaEJ4MEI7a0JBR00sSUFMZXkwQixTQUtmLFdBRlVEO2tCQUVWLEdBTGVDO29CQVFqQixRQVJVaDZFLGdCQUFPOHlCO2tCQU1WO2dCQW5CRixHQWdCT2luRDtrQkFkSCxTQWNHQTs7a0JBZEgsSUFYQzMxRSxLQXdCZG1oRDtrQkF4QmtCLEdBeUJGdzBCO29CQXZCSCxjQUZDMzFFLFNBYWhCczFFLFdBU2dCMTVFLFVBQUUyNUUsS0F0QkZ2MUU7a0JBQ1A7Z0JBU0E7Y0FOQTtVQW1CRyxPQURXMHVCO01Bd0J2QixrQkF4QmtCNm1ELDZCQW1CSkUsS0FLOEI7SUFoVnJCLFNBbVl2QkksVUFBVXpFO01BQ0osaUJBRElBO01BR3NCOzs7U0FGOUJoeEU7OztnQkFFOEIsaUJBSHRCZ3hFLDBDQUNSaHhFO1lBQ0E4USxJQUVVLFdBSkZrZ0U7TTNDb0JOLGtCMkNsQkZsZ0UsSUFEQTlRO01BS0osaUJBTllneEUsU0FFUmxnRTtNQUlKLE9BSklBLEdBS0g7SUExWXdCLFNBOGR2QjRrRSxZQUFZMUUsTUFBTVQ7TUFDcEIsUUFEb0JBLG1CQUNwQjs7V0F4RG9CLzBFLE9Bd0RoQitIO1VBRUY7Z0JBMURrQi9IO1dBMEROLHVCQUhNKzBFO1dBdERwQjs7Y0FBYzt1QkFETS8wRTtjQUNRLHdCQXNEUiswRSx1QkF0RGdCO1dBQzlCO29CQW1ESm9GOzs7Y0FsRHdCOztlQXVEUUMsTUE3SWxCLFNBQUp2MUUsR25EN2NmLGdCbUQ2YzRCcUssS0FBUSxPQUFyQnJLLENBQXNCLEdBQXRCQTs7O2NBdUZVOztlQXNEWXUxRSxNQTVJbEIsU0FBTjUxRSxHbkQ5Y2IsZ0JtRDhjNEIwSyxLQUFPLE9BQVBBLFFBQWYxSyxFQUE0QyxHQUE1Q0E7OztjQXVGWTs7ZUFBa0I7ZUFxRE40MUU7Z0JBMUlsQyxTQURVbHRFLEVBQUUxSSxHbkQvY2YsZ0JtRGdkWTBLLEtBQ1AsT0FET0EsUUFEQ2hDLE9BQUUxSSxFQUVtRDtrQkFGckQwSSxFQUFFb0k7OztjQXVGVTs7ZUFvRFk4a0U7Z0JBeElsQixTQUFMNTFFO21CbkRsZGQsZ0JtRGtkNEIwSyxLQUFPLGtCQUFQQSxXQUFkMUssR0FBYzBLLElBQXFCO2tCQUFuQ3FHOzs7Y0FxRlc7O2VBbURZNmtFO2dCQXZJbEIsU0FBTjUxRSxHbkRuZGIsZ0JtRG1kNEIwSyxJQUFJckssR0FBSyxRQUF4QkwsS0FBbUJLLEVBQUssUUFBd0I7a0JBQWhEdzFFOzs7Y0FxRlk7O2VBQWtCO2VBa0RORDtnQkF0SWhCLFNBQU5sMkUsRUFBRVcsR25EcGRqQixnQm1Eb2Q4QnFLLEtBQVEsa0JBQXZCaEwsRUFBRVcsRUFBd0I7a0JBQTFCWCxFQUFFNlo7OztjQXFGUTs7ZUFBa0I7ZUFpRE5xOEQ7Z0JBckloQixTQUFSbDJFLEVBQUVNO21CbkRyZGYsZ0JtRHFkOEIwSyxLQUFPLGtCQUF4QmhMLEVBQWlCZ0wsUUFBZjFLLEdBQWdEO2tCQUFsRHVpRCxJQUFFdXpCOzs7Y0FzRkE7O2VBQW1CO2VBQWtCO2VBK0NmRjtnQkFuSWxDLFNBRFVsMkUsRUFBRWdKLEVBQUUxSTttQm5EdGRqQixnQm1EdWRZMEs7cUJBQ1Asa0JBRlFoTCxFQUNEZ0wsUUFER2hDLE9BQUUxSSxHQUVxRDtrQkFGekR3aUQsSUFBRWwvQixJQUFFeXlEOzs7Y0F1RlE7O2VBQWtCO2VBNkNOSDtnQkFqSWhCLFNBQVBsMkUsRUFBRU07bUJuRHpkaEIsZ0JtRHlkOEIwSztxQkFBUyxrQkFBekJoTCxFQUF5QixXQUFUZ0wsV0FBZDFLLEdBQWMwSyxLQUF5QjtrQkFBekNnNEMsSUFBRXN6Qjs7O2NBc0ZEOztlQUFrQjtlQUFrQjtlQTJDZEo7Z0JBaElSLFNBQVJsMkUsRUFBRVcsRUFBRUM7bUJuRDFkekIsZ0JtRDBkc0NvSyxLQUFRLGtCQUF6QmhMLEVBQUVXLEVBQUVDLEVBQTBCO2tCQUE5QnVpRCxJQUFFRSxJQUFFemlEOzs7Y0F3RlY7O2VBQWtCO2VBQWtCO2VBd0NkczFFO2dCQS9IUixTQUFWbDJFLEVBQUVXLEVBQUVMO21CbkQzZHZCLGdCbUQyZHNDMEssS0FBTyxrQkFBMUJoTCxFQUFFVyxFQUFpQnFLLFFBQWYxSyxHQUFrRDtrQkFBdERvakQsSUFBRUYsSUFBRSt5Qjs7O2NBMEZSOztlQUFrQjtlQUFrQjtlQUFtQjtlQXFDakNMO2dCQTFIbEMsU0FEZ0JsMkUsRUFBRVcsRUFBRXFJLEVBQUUxSTttQm5EL2R6QixnQm1EZ2VZMEs7cUJBQ1Asa0JBRmNoTCxFQUFFVyxFQUNUcUssUUFEV2hDLE9BQUUxSSxHQUUrQztrQkFGckRzakQsSUFBRTR5QixJQUFFbGpELElBQUVtakQ7OztjQXlGVjs7ZUFBa0I7ZUFBa0I7ZUFrQ2RQO2dCQTlIVCxTQUFSbDJFLEVBQUVXLEVBQUVMO21CbkQ1ZHhCLGdCbUQ0ZHFDMEs7cUJBQVcsa0JBQTVCaEwsRUFBRVcsRUFBMEIsV0FBWHFLLFdBQWIxSyxHQUFhMEssS0FBMkI7a0JBQTVDNjRDLElBQUU2eUIsSUFBRUM7OztjQStGVDs7ZUFBa0I7ZUFBa0I7ZUErQmRUO2dCQTdIVixTQUFSbDJFLEVBQUVNLEVBQUVLO21CbkQ3ZHZCLGdCbUQ2ZG9DcUssS0FBTyxrQkFBeEJoTCxFQUFpQmdMLFFBQWYxSyxHQUFFSyxFQUFnRDtrQkFBcERtakQsSUFBRTh5QixJQUFFQzs7O2NBaUdSOztlQUFrQjtlQUFtQjtlQUFrQjtlQTRCakNYO2dCQXZIbEMsU0FEZ0JsMkUsRUFBRWdKLEVBQUUxSSxFQUFFSzttQm5EbGV6QixnQm1EbWVZcUs7cUJBQ1Asa0JBRmNoTCxFQUNQZ0wsUUFEU2hDLE9BQUUxSSxHQUFFSyxFQUUrQztrQkFGckRtMkUsSUFBRUMsSUFBRUMsS0FBRUM7OztjQStGVjs7ZUFBa0I7ZUFBa0I7ZUF5QmRmO2dCQTVIVCxTQUFSbDJFLEVBQUVNLEVBQUVLO21CbkQ5ZHhCLGdCbUQ4ZHFDcUs7cUJBQVMsa0JBQTFCaEwsRUFBMEIsV0FBVGdMLFdBQWYxSyxHQUFlMEssS0FBYnJLLEVBQXdDO2tCQUE1Q3UyRSxJQUFFQyxLQUFFQzs7O2NBc0dUOztlQUFrQjtlQXNCSWxCO2dCQXJIWCxTQUFONTFFLEVBQUVLO21CbkRyZXRCLGdCbURxZW1DcUs7cUJBQU8sa0JBQVBBLFdBQWYxSyxHQUFlMEssSUFBYnJLLEVBQStDO2tCQUFqRDAyRSxLQUFFQzs7O2NBaUdQOztlQUFrQjtlQW9CSXBCO2dCQW5IbEMsU0FEZTUxRSxFQUFFbXBCO21CbkR0ZXBCLGdCbUR1ZVl6ZTtxQkFBTyxrQkFBUEEsV0FETTFLLEdBQ04wSyxZQURReWUsR0FDaUQ7a0JBRG5EOHRELEtBQUU5dEQ7OztjQWtHTDs7ZUFBa0I7ZUFBa0I7ZUFrQmR5c0Q7Z0JBakhsQyxTQURlNTFFLEVBQUUwSSxFQUFFeWdCO21CbkR4ZXRCLGdCbUR5ZVl6ZTtxQkFBTyxrQkFBUEEsV0FETTFLLEdBQ04wSyxZQURRaEMsT0FBRXlnQixHQUVnRDtrQkFGcEQrdEQsS0FBRUMsSUFBRTVnRDs7O2NBbUdQOztlQUFrQjtlQWVJcS9DO2dCQTlHbEMsU0FEZ0I1MUUsRUFBRW1wQjttQm5EM2VyQixnQm1ENGVZemU7cUJBQWlDLG9CQUFqQ0EsV0FEU3llLEdBQ1R6ZTtxQkFBaUMsa0JBQWpDQSxXQURPMUssR0FDUDBLLFNBQWlEO2tCQUQxQzBzRSxLQUFFaGdEOzs7Y0FrR04sZ0JBQWtCO2NBQXlCLFVBVXpDNDVDO2NBVkY7ZUFhc0I0RTtnQkE1R2xDLFNBRGF6c0QsRUFBRTlvQjttQm5EN2VsQixnQm1EOGVZcUs7cUJBQU8seUNBRERySyxFQUFGOG9CLEtBQUU5b0IsRUFDeUM7a0JBRDNDZzNFLElBQUVDOzs7Y0FrR0gsZ0JBQWtCO2NBQXdCLFVBUXhDdEc7Y0FSRjtlQVdzQjRFO2dCQTFHbEMsU0FEV3pzRCxFQUFFbnBCO21CbkQvZWhCLGdCbURnZlkwSztxQkFDUCxTQURPQSxRQURJMUs7cUJBRVgsOENBRlNtcEIsVUFHbUI7a0JBSG5Cb3VELElBQUVDOzs7Y0FrR0QsZ0JBQWtCLFlBQWtCO2NBQzdCLFVBS0x4RztjQU5GO2VBU3NCNEU7Z0JBdEdsQyxTQURXenNELEVBQUV6Z0IsRUFBRTFJO21CbkRuZmxCLGdCbURvZlkwSztxQkFDUCxTQURPQSxRQURJaEMsT0FBRTFJO3FCQUViLDhDQUZTbXBCLFVBS3FCO2tCQUxyQnN1RCxJQUFFQyxJQUFFQzs7O2NBaUdILGdCQUFrQjtjQUF5QixVQUd6QzNHO2NBSEY7ZUFNc0I0RTtnQkFoR2xDLFNBRFl6c0QsRUFBRW5wQjttQm5EemZqQixnQm1EMGZZMEs7cUJBQ0csb0JBREhBLFdBREsxSyxHQUNMMEs7cUJBQ0csOENBRkF5ZSxVQUU2QztrQkFGN0N5dUQsSUFBRUM7O2VBaUdvQmpDLE1BTGhDRDtVQU1BLFdBSlkzRSxNQUdSRSxNQUE0QjBFO1VBQ2hDOztRQTFEWSxTQTREVjtJQXBlcUIsU0EyZXZCa0M7TUFDRixVQS9lRTVILGVBeUNBVyxnQkFDQUMsa0JBc2N1RDtJQTdlaEM7Ozs7T0E0Q3ZCQztPQTZGQThCO09BVUFFO09BWUFNO09BR0FDO09BakhBckM7T0FTQUU7T0FVQUk7T0FQQUY7T0FpYUFxRTtPQW5aQWhFO09BdUNBZTtPQW1EQWM7T0FsTEF0RDtPQWdNQXVEO09BYUFHO09BS0FDO09BWUFJO09BU0FJO09BT0FFOztPQU1BRztPQU9BQztPQWNBRztPQUtBRTtPQU9BQztPQW1FQUk7T0E5WkExRjtPQThqQkFvSTtJQTNldUI7OzthQ3RFdkJDLGVBQWV4RCxJQUFJeUQ7TUFDckI7Y0FEcUJBO09BRVYsc0JBRFA1c0U7T0FDTyxLQURQQTtPQUNPOztZQUNYNVA7UUFDRTtVQUEwQixJQWhDSTA4RSxNQWdDSixpQkFKUEYsUUFHckJ4OEU7VUE5QkEsVUFEZ0MwOEU7V0FDaEMsT0FEZ0NBOztjQUkzQjs7eUJBMkJMMThFOzJCQTNCYTZzRCxHQUFJaG9EO29CQUNtQixJQUF6QjgzRSxLQUxVRixTQStCckJ6OEU7b0JBMUJvQyxHQUR2QjZzRCxPQUNGOHZCLEtBRUYsb0NBcUJRNUQ7b0JBbkJSLGtCQUpFNEQsS0FETTkzRSxFQUtIO3lCQUxEZ29EO2VBQVIsUUEyQkw3c0Q7ZUE5Qkl1VSxLQUdTczRDOzs7Y0FRUixJQUFRdm1EO2NBT1I7Z0JBUFFBOztpQkFBUixTQUFRQSxFQW1CYnRHO29CcER0REg7c0JvRHFDNkIsSUFBYmlkLElBZFF3L0QsU0ErQnJCejhFO3NCQWpCMEIsR0FGYnNHLE1BRUEyVyxJQUVGLG9DQVlNODdEO3NCQWRTLFNBSWYsYUFKRTk3RDtzQkFJRjsrQkFKRUE7NENoQ1ZYeE0saUJnQ1VXd007bUJBRkEzVyxFQW1CYnRHO2NBbkJLLElBWER1VSxLQVdTak87O3lCQVhUaU8sS0FvQlUsWUFPR3drRTs7V0EzQmpCLFNBRGdDMkQ7WUF1QjNCLFVBdkIyQkEsU0FDNUJub0UsS0FzQlUsZUFLR3drRSxJQU5ONkQ7O1lBRUksTUF4QmlCRixTQUM1Qm5vRSxLQXVCTW5RO1VBRVYsU0FLQXBFLEtBOUJJdVU7VUErQndCLFNBRDVCdlU7OztNQUdBLE9BbENxQnk4RSxJQWtDakI7YUFFRkksU0FBUzlELElBQUkyRDtNQUNmLFVBRGVBO1FBR1osSUFETUUsTUFGTUYsU0FHWixzQkFIUTNELElBRUY2RDtNQUVGLCtDQUFpRDthQWlCdERFLGlCQUFpQk4sUUFBTTFzRSxFQUFFdEw7TXBEaEY5QixTb0RpRlcsYUFEbUJBLE1BQVJnNEUsc0JBQVFoNEU7UUFFM0IsU0FGbUJnNEUsMkJBRW5COzs7VUFDRTtZQUErQixRQUhOaDRFLE1BRTNCeEUsR0FDdUIsdUJBSEp3OEUsUUFFbkJ4OEU7WUFoQkEsVUFEOEIwOEU7YUFDOUIsU0FEOEJBOzt3QkFPbkIsYUFQeUJwbkU7aUJBUXhCLE9BT2F4RixNQUV6QjlQLEdBUkdzVTtpQkFDRTswQkFERkEsS0FUaUNnQixRQVNqQ2hCO21CQUNFLFNBREZBOzs7OztlNUNzY0c7O2M0QzVjSCxNQWNIdFUsS0FqQm9Dc1Y7O2FBQ3BDLFNBRDhCb25FO2VBYTNCLElBRE1FLE1BWnFCRixTQWFKLGlCQURqQkUsTUFHZ0I5c0UsTUFFekI5UCxHQWpCb0NzVjtZQWtCSCxTQURqQ3RWOzs7O21DQUVJO2FBRUZnOUUsV0FBV04sTUFBTTVzRSxFQUFFdEw7TUFDckIsVUFEYWs0RTtRQUdWLElBRE1FLE1BRklGLFNBR1Ysd0JBRE1FLE1BRlU5c0UsRUFBRXRMO01BSWQsK0NBQW1EOzJCQS9CeERxNEUsU0EyQkFHOztJQzFEaUI7O2VBQWpCQztLQUFpQjthQUtqQkc7TUFBa0IsWUFMbEJILGVBS2tCLHNCQUFxQztJQUx0QyxTQU9qQkksTUFBTWoyRTtNQUNSLHdCQU5FODFFLGNBQ0FDO1FBTWdCLElBQVpHLFVBQVksc0JBTmhCSDtRQU9BLEtBUkFELFlBT0lJLFlBTkpIO1FBT0EsWUFESUc7TUFJTixlQVhFSixVQUNBQyxVQUlNLzFFO01BTVI7Y0FDVztJQWRRLFNBZ0JqQm0yRTtNQUNNLElBQUo3NEUsRUFBSSxXQWZOdzRFLFlBQ0FDO01BY00sWUFqQk5GO01BaUJNLE9BQUp2NEUsQ0FBcUU7SUFqQnRELFNBcUJqQjg0RSxXQUFXQztNQUNHLElBQVpDLFVBQVk7TUFDaEI7aUJBQWVoNUUsR0FBSyxvQ0FEaEJnNUUsVUFDV2g1RSxRQUFvQztRQUZ0Qys0RTtNQUViLFNBQ0lFLGlCQUFpQnJ1RTtRQUNuQjtVQUFJLHNDQUhGb3VFLFVBRWlCcHVFOzs7Z0NBRUosVUFGSUE7VUFERCxXQUdLO01BSHpCLFNBSUlzdUUsaUJBQWlCeDJFO1FBQ1gsSUFBSjFDLEVBQUksU0FEVzBDO1FBQ1g7VUFDSixzQ0FQRnMyRSxVQU1FaDVFOzs7Z0NBRStCLHlDQUYvQkE7VUFISixXQUs4RDtNQVBoRSxTQXNJSW01RSxRQVdtQjErQztRckRwTTFCO1FxRDBMSztVQUFNLGlCQVVlQTtVQVZmOzs7OztnQkFDUSxLQVNPQTtnQkFKZixtQkFJZUE7Z0JBSmY7d0NBQ1EsS0FHT0EsTUFIK0IsUUFHL0JBO2tCQUZULEtBRVNBOztnQkFEZDs7O2dCQVBPLEtBUU9BO2dCQUNyQjtrQkFBTSxtQkFEZUE7a0JBQ2Y7O29DQUNRLEtBRk9BLE1BRVA7b0NBQ0EsS0FIT0E7b0JBSVQsS0FKU0E7O2tCQUtkO1lBWkssS0FPU0E7O1VBTmQsZ0JBQW9CO01BM0k3QixTQTJHSTIrQyxPQUFRMytDO1FBQ0osaUJBRElBO1FBQ0o7Ozs7OztzQkFDUSxLQUZKQSxNQUVJO3NCQUNBLEtBSEpBLE1BR0k7c0JBQ0EsS0FKSkEsTUFJSTs7OzthQUVWLEtBTk1BO2FBT00sbUJBUE5BO2FBT007OztpQkFFUixLQVRFQTtpQkFVVSxtQkFWVkE7aUJBVVU7OztxQkFFUixLQVpGQTtxQkFZRTs7Ozs7Ozs7OztpQkFJRzthQUVKO1VBRUMsS0FwQkZBO1VBb0JFO1FBQ0wsZUFBb0I7TUFoSTdCLFNBaUZJNCtDLGtCQUFtQjUrQztRQUNyQjtVQUFNLGlCQURlQTtVQUNmOzt3Q0FFRixLQUhpQkEsTUFHcUI7VUFDUyxrQ0FBZixpQkFBaUI7TUFyRnZELFNBNEVJNitDLGNBQWU3K0M7UUFDWCxpQkFEV0E7UUFDWDs7O1U3Q2daRjtZNkM5WUEsS0FIYUEsTUFHeUIscUNBSHpCQTtRQUlWLHlCQUpVQSxLQUljO01BaEZqQyxTQTRESTgrQyxPQWMwQnY1RTtRQWI1QjtVQUFNLGlCQWFzQkE7VUFidEI7Ozs7O2M3Q2dhRixhNkMxWkEsS0FPd0JBLEdBUGMsK0JBT2RBOzs7Z0JBVHhCLEtBU3dCQTtnQkFUYztnQkFLMUM7a0JBQU0sbUJBSXNCQTtrQkFKdEI7OztrREFFRixLQUV3QkEsR0FGYzs7O3VCQUV0QyxLQUF3QkEsR0FBYywrQkFBZEE7a0JBQ3VCLGtDQUFmOzZCQVpoQyxLQVd3QkEsR0FYYztVQUtLLGdDQUFmLGlCQUFpQjtNQXBFbkQsU0ErQ0l3NUUsT0FBUS8rQztRQUNWO1VBQU0saUJBRElBO1VBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZN0M2YUYsYTZDemFBLEtBTE1BLE1BS2dDO1VBQzlCLDJCQUFrQixnQkFBZ0I7TUFyRGhELFNBc0RJZy9DLFdBSU16NUU7UUFIRixpQkFHRUE7UUFIRjs7O1lBRUYsS0FDSUEsR0FBYyxnQkFBaUIsVUFBVywwQkFBMUNBO1FBQ2lCO1FBQWlCO3NCQURsQ0EsRUFDcUQ7TUEzRC9ELFNBeUNJdStCLE1BQU85RDtRQUNUO1VBQU0saUJBREdBO1VBQ0g7Ozs7Ozs7Ozs7Ozs7WTdDbWJGLGE2Q2hiQSxLQUpLQSxNQUlpQztVQUM5QiwyQkFBa0IsZ0JBQWdCO01BOUNoRCxTQVNRaS9DLHFCQXlGRWovQztRQXhGUjtVQUFNLGlCQXdGRUE7VUF4RkY7Ozs7Ozs7Ozs7Ozs7b0JBeUJGLEtBK0RJQTtvQkE5RGM7b0JBbUR0QjtzQkFBTSxtQkFXRUE7c0JBWEY7O3dDQUNTLEtBVVBBLG1CQVZPOzswQkFFWCxLQVFJQTswQkFSSjs0QkFFTSxJQURGbGdCLElBQ0UsT0FNRmtnQjs7O2tEQUxrQjs7OzBCQUVKLE1BSmRsZ0I7O3dCQUtJLEtBRUprZ0I7d0JBRjBDOztzQkFDM0M7O29CQXhFSCxLQXlFSUE7b0JBekVKO3NCQTBFRSxtQkFERUE7c0JBQ0YsYUFPQztzQkFQRDs7d0JBRUYsS0FISUE7d0JBR0o7MEJBQ1UsZ0JBSk5BOzs7Z0RBS2dCOzBCQUdqQjs0QkFoRkMvM0I7O3dCQStFSSxLQVBKKzNCLFVBeEVBLzNCOzs7NENBRWtCOztvQkFFVixtQkFvRVIrM0I7O3NCQW5FVyxLQW1FWEEsTUFuRVcsYUFMWC8zQjtvQkFNRzs7b0JBTUcsS0E0RE4rM0I7b0JBNURNOzs2QkEyRlprL0Msd0JBL0JNbC9DO2tEQStCTmsvQyxpQkEvQk1sL0M7MkJBN0RNLEtBNkROQSxNQTdETSxrQkE2RE5BOzs7Ozs7MkJBdEZKLEtBc0ZJQTs7Ozs7Ozs7Ozs7b0JBNUVKLEtBNEVJQSxNQTNFYyxnQkFBaUIsMEJBMkUvQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k3QzJYSjtxQjZDdGJRLEtBMkRKQSxNQTNENkI7O2VBekJqQyxLQW9GSUEsTUFuRmMsZ0JBQWlCLHlCQW1GL0JBOztlQS9FSixLQStFSUEsTUE5RWMsZ0JBQWlCLDBCQThFL0JBO1VBMURELFNBQUk7TUF4Q2IsU0FpSUlrL0Msc0JBQWVsL0M7UUFDWCxpQkFEV0E7O1VBR2IsS0FIYUE7VUFHeUIsUUFIekJBO1VBR3lCO2lEQTNIcENpL0MsdUJBd0hXai9DO3dDQXhIWGkvQyxnQkF3SFdqL0M7UUFJTCwrQkFBc0I7TUFySXBDLFNBU1FtL0MsV0F5RkVuL0MsTXJEckpiLHVCcUQ0RFdpL0MsZUF5RkVqL0M7TUFsR1YsZ0JBd0pJMzJCO1FBQVMscUJBQWlCNDFCLE9BQVUsa0JBQXBDNTFCLE1BQW9ELEVBQUM7SUEvS3RDLHFCQXFCakJnMUU7SUFyQmlCO0lDc0VGO010RGxHcEIsSXNEb0lTdnFCLHlCdERwSVQ7ZXNEc0lTdGpELE9BQVM2Z0IsSUFBcUM0aUM7UUFDaEQsR0FEVzVpQztTQUFTLFFBQVRBLGNBQVNDOzthQUFUNGlDLE9BQVM7WUFQQXh1RDtRQUNwQjtVQUNLLE1BSzJDdXVELGdCQVA1QnZ1RDtZQUdmLFFBSGVBO2FBT1R3dUQ7V0FFZTs4QkFKeEJKO1lBSXdCLGtCQUp4QkEscUJsQ3pHSnhpRCxpQmtDeUdJd2lEO1lBSUUvQyxLQUFzQjs7ZUFBdEJBO1VBQzhDLDJCQVY5QnJyRCxLQVNoQnFyRCxLQVRnQnJyRCxHQVVrRDtlQUVwRXEzQixNQUFNMVE7UUFDUjtnQkFEUUEsZ0JBQ1IsS0FDSXpqQixZQURKOztjQUVBL0g7VUFDRTs2QkFKTXdyQixLQUdSeHJCO1lBQ0UsU0FERkE7OztnQkFFSTtlQUVGMmdDLE1BQU1uVjtRQUNSLElBQUl6akIsSUFESXlqQjtRQUNSLE9BQUl6akIsUUFESXlqQjtpQkFHTixNQUhNQTtrQ0FNSSxlQU5KQSxVQU9MO2VBRURpckMsS0FBS2xpRDtRQUFJLFNBQUpBLFFBQUksS0FBSkEsUUFBb0IsWUFBcEJBO1FBQW9CLFVBQXBCQSx1QkFBdUM7ZUFFNUNxaEQsVUFBVXBxQyxFQUFFK3lELE1BQ2QsT0FEY0EsUUFBRi95RCx3QkFDdUI7ZUFFakNnekQsTUFBTWh6RDtRQUNSLFNBQVFtcEM7VXREaktmO1VzRGlLMkI7O2tDQUdMejBELGdCQUFIa0g7Y0FBa0IsbUJBQWxCQTtvQkFHTWpILGtCQUFIOGU7Z0JBQ0ssZUFETEEsSUFDSyxVQURGOWU7Y0FGWixPQUxFcXJCOzBCQUlPdHJCOztZQURULFNBSzZCO1FBUG5DLE1BRFFzckIsS0FDUixLQVNJbFAscUJBVEo7O2NBVUF0YztVQUNFO1lBQVMsbUJBQVUsaUJBRmpCc2MsRUFDSnRjO1lBQ0UsaUJBRkVzYyxFQUNKdGM7WUFDVyxTQURYQTs7O2dCQUVJO2VBc0JGNGdDLE9BQU9wVjtRQUNULFVBRFNBLEtBQ1QsTUFBSXdvQyxpQkFBSixNQUNJUztRQUVKLE1BSlNqcEM7UUFDVDtTQUdBLEtBREkwb0M7U0FDSixXQUZJTyxvQkFGS2pwQztRQUtxRDtVQUNoRCxJQUFSeW9DLE1BQVEsZUFIVkM7VUFHVSxPQUFSRDtVQUFROzs7Y0FFWTtvQkFFSC96RCxjQUFOcTZCLGNBQU5na0Q7Z0JBQ0gsY0FEZXIrRTtnQkFFSjtnQ0FaVnNyQixFQVVFK3lEO2lCQUc4QixRQUg5QkEsS0FBTWhrRCxLQUd3QixpQkFQbkMwNUIsTUFNTUk7Z0JBQ0osaUJBUEZKLE1BTU1JO2dCQUNKO2NBSk8sUUFJdUM7V0FQeEMsS0FKVkk7V0FJVTs7Z0JBUVp6MEQ7WUFDRTs0QkFBYyxpQkFkZGcwRCxNQWFGaDBEO2NBQ0UsU0FERkE7OztVQVJZOzs7UUF4Q00sV0FtRGpCO2VBRUQ4MUIsSUFBSXRLLEVBQUUrNUIsSUFBSXQyQztRQUNEOzhCQURMdWMsS0FBRSs1QjtTQUVBLFlBRkYvNUIsRUFDRit5RDtTQUVZLDBCQUhSaDVCLElBQUl0MkM7U0FJdUIsVUFIL0JzdkUsS0FFQUcsVUFDK0IsaUJBSjdCbHpELEtBRUZ4ckI7UUFHSixpQkFMTXdyQixLQUVGeHJCLFlBRUE2MUQ7UUFDSixPQUxNcnFDO1FBQ0ssU0FETEE7UUFLTixZQUUyQyxPQVByQ0EsT0FPNkM7ZUFFakRzTCxPQUFPdEwsRUFBRSs1QjtRQUNBLElBQVBnNUIsS0FBTyxnQkFERi95RCxLQUFFKzVCO1FBQ0EsU0FDSG81QjtVdERqT2Y7VXNEaU8rQjs7a0JBRWZDLGNBQU9sdEUsZ0JBQUh0SztpQkFIVG0zRSxTQUdLSztnQkFDUywwQkFETHgzRSxFQUpGbStDO2dCQUtPO3lCQUNELE9BTlIvNUIsYUFNUSxPQUZEOVo7eUJBR2MsVUFIckJrdEUsR0FBSXgzRSxFQUdpQixjQUhkc0s7MEJBT04sT0FYRDhaLHlCQUlPOVo7a0JBVUZnaUQsa0JBQUZ6MEM7Y0FBdUIsVUFWMUIyL0QsR0FVRzMvRCxJQUF1QixjQUFyQnkwQztZQVhELFNBV3lDO1FBQzlDO3FCQWZDbG9DLEVBQ0wreUQ7U0FlVSxtQkFBYyxpQkFoQm5CL3lELEtBZUx4ckI7UUFDSixpQkFoQlN3ckIsS0FlTHhyQjtRQUNKLFFBQXNDO2VBMEJwQ3dULEtBQUtnWSxFQUFFKzVCO1FBQ0U7OEJBREovNUIsS0FBRSs1QjtTQUdrQixlQUhwQi81QixFQXBCWSt5RDtTQXVCRCx5QkFIWC95RDs7OztnQkFqQkFvekQsWUFBTzErRSxjQUFIa0g7ZUFIUW0zRSxTQUdaSztjQUNTLDBCQURMeDNFLEVBaUJGbStDO2NBaEJPOztpQkFFSSw0QkFIVG4rQztpQkFHUyxZQUtBLElBQUxrVixhQUFLLE9BQUxBO2lCQUxLLFVBSE5wYzs7OztZQWVWLDJCQURTNGM7O1VBZlQsZ0JBcUJ5QztlQXNCM0M4YixTQUFTcE4sRUFBRSs1QjtRQUNGOzhCQURBLzVCLEtBQUUrNUI7U0FHa0IsZUFIcEIvNUIsRUFwQlkreUQ7U0F1QkQseUJBSFgveUQ7Ozs7Z0JBakJKb3pELFlBQU8xK0UsY0FBSGtIO2VBSFltM0UsU0FHaEJLO2NBQ1MsMEJBREx4M0UsRUFpQkVtK0M7Y0FoQkc7O2lCQUVJLElBS1ZqcEMsRUFMVSxnQkFIVGxWO2lCQUdTLEdBS1ZrVixFQUFlLE9BQWZBO2lCQUxVLFVBSE5wYzs7OztZQWVWLDJCQURTNGM7O1VBZlQsU0FxQjZDO2VBRS9DdTVDLFNBQVM3cUMsRUFBRSs1QjtRQUNGLElBQVBnNUIsS0FBTyxnQkFEQS95RCxLQUFFKzVCO1FBQ0YsU0FDSCtRO1V0RHpTZjtVc0R5U2dDOztrQkFFbEJzb0IsY0FBTzErRSxnQkFBSGtIO2lCQUhQbTNFLFNBR0dLO2dCQUNTLDBCQURMeDNFLEVBSkVtK0M7Z0JBS0c7O21CQUNXLDRCQUZoQm4rQzttQkFFZ0I7cUJBR1AsSUFBTGtWLGFBQVEsVUFBUkEsRUFBUSxlQUxUcGM7bUJBRWEsWUFGYkE7Ozs7Y0FZViwrQkFEUzBtQjs7WUFaRixTQWFZO1FBQ0EsbUJBakJaNEUsRUFDUCt5RDtRQWdCVyx1Q0FqQkoveUQscUJBaUI2QjtlQUd0QytxQyxRQUFRL3FDLEVBQUUrNUIsSUFBSXQyQztRQUNMLElBQVBzdkUsS0FBTyxnQkFERC95RCxLQUFFKzVCO1FBQ0QsU0FDSHM1QjtVdEQ3VGY7VXNENlRnQzs7a0JBRWhCRCxjQUFPbHRFLGdCQUFIdEs7aUJBSFRtM0UsU0FHS0s7Z0JBQ1MsMEJBREx4M0UsRUFKRG0rQztnQkFLTSxzQkFERjd6QztnQkFFQyx1QkFGSnRLLEVBSkRtK0MsSUFBSXQyQztjQVNNLCtCQUFUMlg7O1lBTkEsZ0JBTTRCO1FBRWpDLGdCQVhFNEUsRUFDTit5RCxNQVdJLG1CQVpFL3lELEtBV054ckI7UUFDSTtVQUVOLHdCQUZFc0c7Ozs7WUFJYyxJQUFabzRFLFVBQVksZ0JBaEJObjVCLElBQUl0MkM7WUFpQmQsaUJBakJRdWMsS0FXTnhyQixlQVZBdStFLEtBZUVHLFVBSkZwNEU7WUFLRixPQWpCUWtsQjtZQWdCUSxTQWhCUkE7WUFpQlIsWUFFMkMsT0FuQm5DQTtVQWxCZSxXQXFDNEI7ZUFFbkRxTCxJQUFJckwsRUFBRSs1QjtRQUNHOzhCQURMLzVCLEtBQUUrNUI7U0FXYyxlQVhoQi81QixFQUNGK3lEO1NBVVUseUJBWFIveUQ7O1FBRWtCOztnQkFHakJvekQsWUFBTzErRSxjQUFIa0g7ZUFBSnczRSxPQUpITDtjQUtZLDBCQURMbjNFLEVBTEhtK0M7Y0FNUSxvQkFERnJsRDtjQUVDO1lBR1UsMkJBQVQ0Yzs7VUFOWixTQU9tQztlQUVyQ3ZFLE9BQUtyVSxFQUFFc25CO1FBQ1QsUUFEU0EsS0FDVCxLQVFJMUMsdUJBUko7O2NBU0E5b0I7O1VBQ0U7WUFBVSw2QkFGUjhvQixJQUNKOW9CO1lBVG9COztnQkFJRjtpQkFESEU7aUJBQUhrSDtpQkFDTSxzQkFETkE7aUJBQ21CLHdCQURuQkE7OztzQkFHU2tWLGFBQVIyZSxXQUFhLFdBUG5CLzJCLEVBT00rMkIsRUFBUTNlO2dCQUZILFVBREhwYzs7dUJBTWZGOzs7O1FBckJ3QixRQXVCcEI7ZUFFRnNOLEtBQUtwSixFQUFFc25CLEVBQUVqWDtRQUNYLFFBRFNpWCxLQUNULFVBRFdqWCxNQUNYLEtBVUl1VSx1QkFWSjs7Y0FZQTlvQjs7VUFDRTs7a0JBRkVvVDthQUVnQixxQkFIaEIwVixJQUVKOW9CO2FBWmtCZ0c7YUFBRW9EO1lBQ2xCO2lCQURnQnBEO2dCQUtXO2lCQURkOUYsS0FKRzhGO2lCQUlOb0IsRUFKTXBCO2lCQUtXLHNCQURqQm9CO2lCQUM4Qix3QkFEOUJBOzs7c0JBR1drVixhQUFSMmUsV0FQSzN4QixPQU9RLFdBUnJCcEYsRUFRUSsyQixFQUFRM2UsRUFQSGxUOztnQjlDb0tsQixrQjhDcEtrQkU7Z0JBS1MsSUFMWHRELEVBSUg5RixLQUpLa0o7O2NBV2hCZ0ssWUFYZ0JoSzt1QkFZcEJwSjs7OztRQUdBLE9BSklvVCxTQUlDO2VBRUgwaEQsbUJBQW1CNXdELEVBQUVzbkI7UUFDdkIsU0FBUW1wQztVdEQ5WGY7VXNEOFgyQjs7Y0FJUjtlQURJejBEO2VBQUhrSDtlQUFKdzNFO2VBQ0csc0JBREN4M0U7ZUFDWSx3QkFEWkE7O2dCQUtHLElBREtrVixhQUFSMmUsV0FDRyxtQkFUSy8yQixFQVFSKzJCLEVBQVEzZTtnQkFDTDtrQkFJRixJQURHd2lFO2tCQUNILGdCQVREMTNFLEVBSUE2ekIsRUFJSTZqRDtrQkFFUyxVQVZqQkYsR0FBSXgzRSxFQVVhLFVBVlZsSDtnQkFLQSxZQUxBQTs7Y0FDSixZQURJQTs7WUFEVixTQVdtQztRQWJ6QyxNQUR1QnNyQixLQUN2QixLQWVJbFAscUJBZko7O2NBZ0JBdGM7VUFDRTtZQUFTLG1CQUFVLGlCQUZqQnNjLEVBQ0p0YztZQUNFLGlCQUZFc2MsRUFDSnRjO1lBQ1csU0FEWEE7OztnQkFFSTtlQUVGNFAsT0FBTzRiLEdBQUksT0FBSkEsSUFBVTtlQUVieXBDOzs7O1lBRWdCOzs7O3FCQUFUcnVDOztVQURGO2VBR1RzdUMsTUFBTTFwQztRQUNSO2NBRFFBO1NBQ1I7U0FDRTs7cUJBQXFCbUMsRUFBRTNuQixHQUFlLGFBQWpCMm5CLEVBQWlCLGdCQUFmM25CLEdBQWtDO1NBQy9DLHFCQUZSbXZEO1NBRVEsS0FISjNwQztRQUlSO21CQUNPeGxCO1lBQ007K0JBRE5BO2FBRVcsc0JBSmRvdkQsTUFHSzl1RDtZQUNKLGlCQUpEOHVELE1BR0s5dUQ7WUFDSixRQUEwQjs7UUFIL0IsVUFKUWtsQixxQkFDSjJwQyxJQUVBQyxNQVN3QjtlQUV0QjJwQjs7OztnQkFFTzcrRSxnQkFBSGtIO1lBQWMsbUJBQWRBO2NBQ04sZ0RBRFNsSDtZQUVTLCtCQUFUMG1COztVQUhGO2VBS1RvNEQsWUFBWXh6RDtRQUNkOztjQURjQTtTQUNkO1NBRUU7O3FCQUNPbUMsRUFBRTNuQixHQUFlLGFBQWpCMm5CLEVBQWlCLHNCQUFmM25CLEdBQXdDO1NBRXZDLHFCQUpSbXZEO1NBSVEsS0FORTNwQztRQU9kO21CQUNPeGxCO1lBQ00sSUFBSk0sRUFBSSxzQkFETk47WUFDTSxVQVJUNjJDLFVBUUt2MkM7WUFBSSxTQUVLLGlCQUxkOHVELE1BR0s5dUQ7WUFFSixpQkFMRDh1RCxNQUdLOXVEO1lBRUosUUFBMEI7O1FBSi9CLFVBTkl1MkMsUUFEVXJ4QixnQkFFVjJwQyxJQUlBQyxNQVV3QjtlQUUxQm44QyxPQUFPbVg7UUFHVCxJQUFJa2xDLFNBSEtsbEM7UUFHVCxTQUVRM1EsSUFBSXpmLEVBQUV1MUQ7Y0FBRmh2RCxNQUFFaXZEO1VBQVU7ZUFBVkE7Y0FNSTtlQURGOWpELEtBTEY4akQ7ZUFLRHB1RCxFQUxDb3VEO2VBTUksc0JBRExwdUQ7ZUFDa0Isd0JBRGxCQTs7b0JBR1ltekIsZ0JBQVZnckI7Z0JBQ29COzJCQURwQkEsSUFBVWhyQjt1Q3REM2NoQyxPc0RtY2U5YSxJQUFJbFosSUFLSW1MO2NBQ0UsSUFOSjhqRCxPQUtFOWpEOztZQUhWLEdBRk1uTCxRQUZSK3VELG9CQUtPO1lBQ1M7cUNBTmhCQSxTQUVRL3VEO2FBSVEsSUFKUkE7O2FBQUVpdkQ7cUJBVUw7UUFaVDs4QnREamNQLE9zRG1jZS8xQyxvQkFZRztlQUVUaTJDLFlBQVkvbkM7UUFBZ0IsZ0JBQWhCQTtRQUFnQixvQnREamRyQztRc0RpZHFDLHNCdERqZHJDLE9zQm1DUzdiLHNCZ0M4YXNDO2VBRXRDNmpELGNBQWNob0M7UUFBZ0IsZ0JBQWhCQTtRQUFnQixvQnREbmR2QztRc0RtZHVDLHNCdERuZHZDLE9zQm1DUzdiLHNCZ0NnYndDO2VBRXhDNm5CLFFBQVF2SixJQUFJcHdCO1FBQ2Q7O21CQUFTLHFDQURDb3dCLElBQ0s2SyxFQUFFNzJCLEVBQWtCO2lCQURyQnBFLEVBQ3VCO2VBRW5DdzJELFlBQVlwbUMsSUFBSXB3QjtRQUNsQjs7bUJBQVMseUNBREtvd0IsSUFDQzZLLEVBQUU3MkIsRUFBc0I7aUJBRHJCcEUsRUFDdUI7ZUFFdkM0NUIsT0FBTzU1QixHQUNDLElBQU5vd0IsSUFBTSxhQUNWLFlBRElBLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBeFZEemdCO2NBS0F1c0I7Y0FPQXlFO2NBU0E4MUI7Y0EyREEzZ0M7Y0FTQWdCO2NBMENBdGpCO2NBeUJBb2xCO2NBS0F5OUI7Y0FvQkFFO2NBcUJBMS9CO2NBYUF0ZTtjQWdDQXU4QztjQWxCQXhuRDtjQXVDQXNDO2NBTUFzbEQ7Y0FzQ0FqOEM7Y0FtQkF5OEM7Y0FFQUM7Y0FFQWg4QjtjQUdBNjhCO2NBR0E1OEI7Y0EzVEE0a0Q7Y0E0UUFRO0lBMVVXLFNBK1liQyxnQkFBd0IsMkJBQWU7SUEvWTFCLFNBK2JUQyxVQTlDS2x1RSxHQUFtQyx5QkFBbkNBLElBQXVEO0lBalpuRCxTQWtaYm11RSxlQUFjbnVFLEdBQW1DLHlCQUFuQ0EsSUFBNEQ7SUFsWjdELFNBbVpib3VFLFVBQVNwdUUsRUFBY2lxQixHQUFlLHlCQUE3QmpxQixJQUFjaXFCLEVBQThDO0lBblp4RCxTQW9aYm9rRCxZQUFXcnVFLEdBQXNCLHlCQUF0QkEsSUFBMEM7SUFwWnhDLFNBcVpic3VFLFlBQVd0dUUsR0FBc0IseUJBQXRCQSxJQUEwQztJQXJaeEMsU0F1WmJ1dUUsV0FBVW5oRSxHQUFlRixJQUMzQix5QkFEWUUsS0FBZUYsT0FDQTtJQXhaWixTQTBaYnNoRSxXQUFVeHVFLEdBQW1DLHlCQUFuQ0EsRUFBc0Q7SUExWm5ELFNBMlpieXVFLGNBQWV6dUUsR0FBbUMsMEJBQW5DQSxFQUEyRDtJQTNaN0QsU0E0WmIwdUUsU0FBVTF1RSxFQUFjc0wsR0FBZSwwQkFBN0J0TCxFQUFjc0wsRUFBNkM7SUE1WnhELFNBNlpicWpFLFdBQVkzdUUsR0FBc0IsMEJBQXRCQSxFQUF5QztJQTdaeEMsU0E4WmI0dUUsV0FBWTV1RSxHQUFzQiwwQkFBdEJBLEVBQXlDO0lBOVp4QyxTQStaYjZ1RSxVQUFXemhFLEdBQWNGLElBQXNCLDBCQUFwQ0UsR0FBY0YsR0FBNEM7SUEvWnhELFNBaWFiNGhFLE9BQUt2NkIsSUFBSWhyQjtNQUNELElBQU53bEQsSUFBTSxZQUNWLFNBRElBLElBRE94bEQsTUFHWCxVQUZJd2xELElBREd4NkIsS0FHUCxPQUZJdzZCLEdBR0Q7SUFyYVksU0F1YWJDLE1BQU1ELElBQUl4NkI7TUFDTixvQkFERXc2QjtNQUNGLFVBRVEsSUFBUDlrRCxXQUFPLE9BQVBBLE1BSEtzcUIsSUFHYyxXQUhsQnc2QjtNQUVFLFFBRU07SUEzYUQ7ZUFpYlRwd0UsT0FBT3NyQixFQUFFM2U7UUFDSCxJQUFKbFYsRUFBSSxZQUNSLFNBRElBLEVBRE9rVixHQUdYLFVBRklsVixFQURLNnpCLEdBR1QsT0FGSTd6QixDQUdIO1VBQ0NnVjtlQUNBN08sTUFBTW5HLEVBQUU2ekI7UUFHSixvQkFIRTd6QjtRQUdGLFVBR0YsSUFERzA3QixhQUNBLHVCQU5HN0gsRUFLSDZIO1FBREcsUUFFMEQ7ZUFHbEVtOUMsYUFBYTc0RSxFQUFFNnpCLEVBQUUzZTtRQUNuQixXQURlbFYsR0FFZixVQUZlQSxFQUFFNnpCLEdBRWpCLGdCQUZlN3pCLEVBQUlrVixFQUdQOzs7Z0JBbEJWM007Z0JBS0F5TTtnQkFDQTdPO2dCQTdCSml5RTtnQkFxQ0lOO2dCQUNBZTtnQkEzQ0pYO0lBclphO010RGxHcEIsSXNENmlCYS94RTtlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksdUJBQUpBLEVBQVk7OytCQUQ5QjBJLE1BQ0E2TztPQXZoQlY4ZjtPQUNBeUU7T0FDQTgxQjtPQUNBM2dDO09BQ0FnQjtPQUNBdGpCO09BQ0FvbEI7T0FDQXk5QjtPQUNBRTtPQUNBMS9CO09BQ0FydkI7T0FFQXN0RDtPQUVBeG5EO09BRUFzQztPQUNBc2xEO09BQ0FqOEM7T0FFQXk4QztPQUVBQztPQUVBaDhCO09BQ0E2OEI7T0FFQWdvQjtPQUNBUTs7ZUE2Zk1ydkUsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0FuZ0JKb21DLFlBa2dCUXBtQyxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQUpEemdCO2NBemhCTnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FFQXN0RDtjQUVBeG5EO2NBRUFzQztjQUNBc2xEO2NBQ0FqOEM7Y0FFQXk4QztjQUVBQztjQUVBaDhCO2NBQ0E2OEI7Y0FpZ0JNNThCO2NBL2ZONGtEO2NBQ0FRO0lBK0NpQixTQXlkWGtCLGNBQVUsWUFBTTtJQXpkTCxTQTBkWEMsTUFBSW42RSxFQUFFaTFCLEVBQUUzZSxHQUFJLFNBQVJ0VyxLQUFhLGlCQUFYaTFCLEVBQUUzZSxTQUFTLFFBQWlCO0lBMWR2QixTQTRkWDhqRSxTQUFTbmxELEVBQUUvdEI7TUFDUCxvQkFET0E7TUFDUCxVQUNRLElBQVBySSxXQUFPLEdBQVBBLE1BRklvMkIsRUFFYTtNQUNqQixRQUFLO0lBL2RDLFNBaWVYb2xELFNBQU9yNkUsRUFBRWkxQjtVQUNFMzBCLEVBREpOLEtBQ01zTTtNQUNiO1dBRFdoTTtjQUdUa2xCLEVBSFNsbEIsS0FHSjBLLEVBSEkxSztVQUdHLFlBSkwyMEIsRUFJUHpQLElBQWlDLGtCQUh0QmxaLElBR050QixHQUE0QjtjQUh4QmlNLFNBQUUxSyxTQUdYaVosRUFIV2xaLEtBQUZoTSxNQUFFZ007O1FBRUwsU0FJQTtJQXhlRyxTQTBlWGd1RSxPQUFLdDZFLEVBQUVpMUI7TUFDVDtZQURPajFCO09BQ0QsOEJ0RDdrQmIsT3NEOGpCU282RSxTQWNPbmxEO01BQ0gsVUFDTSxJQUFML3RCLFdBQUssa0JBQUxBO01BQ0csUUFBSTtJQTdlRCxTQStlWHF6RSxTQUFPdjZFLEdBQUksZ0JBQUpBLEtBQWtCO0lBL2VkLFNBZ2ZYdzZFLFFBQU14NkUsR0FBSSxpQkFBTztJQWhmTixTQXlmYnk2RSxnQkFBNkIsMkJBQWU7SUF6Zi9CLFNBMmZiQyxTQUFVMXZFLEdBQXlDLHlCQUF6Q0EsSUFBNkQ7SUEzZjFELFNBNGZiMnZFLGNBQWUzdkUsR0FDVCx5QkFEU0EsSUFDZ0I7SUE3ZmxCLFNBOGZiNHZFLFNBQVU1dkUsRUFBbUJpcUIsR0FDL0IseUJBRFlqcUIsSUFBbUJpcUIsRUFDQTtJQS9maEIsU0FnZ0JiNGxELFdBQVk3dkUsR0FBMkIseUJBQTNCQSxJQUErQztJQWhnQjlDLFNBaWdCYjh2RSxXQUFZOXZFLEdBQTJCLHlCQUEzQkEsSUFBK0M7SUFqZ0I5QyxTQW1nQmIrdkUsU0FBVS92RSxHQUF5Qyx5QkFBekNBLElBQTZEO0lBbmdCMUQsU0FvZ0JiZ3dFLGNBQWVod0UsR0FDVCx5QkFEU0EsSUFDZ0I7SUFyZ0JsQixTQXNnQmJpd0UsU0FBVWp3RSxFQUFtQmlxQixHQUMvQix5QkFEWWpxQixJQUFtQmlxQixFQUNBO0lBdmdCaEIsU0F3Z0JiaW1ELFdBQVlsd0UsR0FBMkIseUJBQTNCQSxJQUErQztJQXhnQjlDLFNBeWdCYm13RSxXQUFZbndFLEdBQTJCLHlCQUEzQkEsSUFBK0M7SUF6Z0I5QyxTQTRnQmJvd0UsVUFBV2hqRSxHQUFpQkYsSUFDOUIseUJBRGFFLEtBQWlCRixPQUNIO0lBN2dCWixTQThnQmJtakUsVUFBV2pqRSxHQUFpQkYsSUFDOUIseUJBRGFFLEtBQWlCRixPQUNIO0lBL2dCWixTQWdoQmJvakUsV0FBWWxqRSxHQUFtQkYsSUFDakMseUJBRGNFLEtBQW1CRixPQUNOO0lBamhCWixTQW1oQmJxakUsV0FBVXZ3RSxHQUF3Qyx5QkFBeENBLEVBQTJEO0lBbmhCeEQsU0FvaEJid3dFLGdCQUFleHdFLEdBQ1QsMEJBRFNBLEVBQ2U7SUFyaEJqQixTQXNoQmJ5d0UsV0FBVXp3RSxFQUFtQnNMLEdBQy9CLDBCQURZdEwsRUFBbUJzTCxFQUNEO0lBdmhCZixTQXdoQmJvbEUsYUFBWTF3RSxHQUEyQiwwQkFBM0JBLEVBQThDO0lBeGhCN0MsU0F5aEJiMndFLGFBQVkzd0UsR0FBMkIsMEJBQTNCQSxFQUE4QztJQXpoQjdDLFNBMGhCYjR3RSxZQUFXeGpFLEdBQWdCRixJQUF3QiwwQkFBeENFLEdBQWdCRixHQUE4QztJQTFoQjVELFNBNGhCYjJqRSxPQUFLQyxLQUFLQyxLQUFLeG5EO01BQ1AsSUFBTndsRCxJQUFNO01BQ1YsV0FESUEsSUFEYXhsRDtNQUdqQixTQUZJd2xELElBREcrQjtNQUlQLFNBSEkvQixJQURRZ0M7TUFJWixPQUhJaEMsR0FLRDtJQWxpQlksU0FvaUJiaUMsUUFBTWpDLElBQUkrQixLQUFLQztNQUNYLG1CQURFaEM7TUFDRjtRQUVRLElBQVA5a0Q7UUFBTyxHQUFQQSxNQUhLNm1EO1VBSUkscUJBSlIvQjtVQUlRO1lBRUUsSUFBUGo5QyxlQUFPLE9BQVBBLFFBTk1pL0MsS0FNYyxXQU52QmhDO1VBS007UUFJRjtNQVBGLFFBT007SUE3aUJEO2VBcWpCVHB3RSxhQUFlMk07UUFDVCxJQURLMDVDLFlBQUhGLFlBQ0Y7UUFDUixXQURJMXVELEVBRGFrVjtRQUdqQixTQUZJbFYsRUFETTB1RDtRQUdLLFNBRlgxdUQsRUFEUzR1RDtRQUdFLE9BRlg1dUQ7ZUFJRmdWLEtBQUs4ekM7UUFDVztTQURGOEY7U0FBSEY7U0FDSyxzQkFEWDVGLEtBQVM4RjtRQUNoQix3QkFETzlGLEtBQU00RjtlQUVYdm9ELE1BQU1uRztRQUNGLElBRFE0dUQsWUFBSEYsWUFDTCxlQURFMXVELEdBQ1UsaUJBRFZBOztjQUdTNjZFLGdCQUFWQztVQUNtQixHQUFuQixpQkFKSXBzQixHQUdKb3NCLFNBQ21CLGlCQUpabHNCLEdBR0dpc0IsTUFFUjtVQUF3QjtRQUhUO2VBS3RCanlFLFFBQVE1STtRQUNKLG1CQURJQSxHQUNRLGlCQURSQTs7Y0FHTzR1RCxjQUFWRiw0QkFBVUU7UUFETyxRQUNlO2VBQ3JDaXFCLGFBQWE3NEUsUUFBVWtWO1lBQUowNUMsWUFBSEY7UUFDbEIsYUFEZTF1RDtRQUVmLFNBRmVBLEVBQUcwdUQ7UUFFSCxTQUZBMXVELEVBQU00dUQ7UUFFTixrQkFGQTV1RCxFQUFVa1Y7ZUFJdkJsTSxVQUFVaEo7UUFBSSxvQkFBSkEsR0FBSSxZQWxFbEIrNUUsV0FrRWMvNUUsT0FBZ0M7O2tCQXRCMUN1SSxPQUtBeU0sS0FFQTdPLE1BekNKZzBFLFdBZ0RJdnhFLFFBSUFpd0UsYUFJQTd2RTtJQTNrQlM7TXREbEdwQixJc0QyckJlN0M7ZUFDQTZPLEtBQU04ekMsS0FBWXJyRCxHQUFJLHdCQUFKQSxFQUFhO1VBTi9Cb1Asc0JBS0ExRyxNQUNBNk87ZUFMQW1PLE9BQU0ybEMsS0FBWXJyRCxHQUFJLHdCQUFKQSxFQUFhOzsrQkFEL0JvUCxRQUNBc1c7T0FocUJaMlI7T0FDQXlFO09BQ0E4MUI7T0FDQTNnQztPQUNBZ0I7T0FDQXRqQjtPQUNBb2xCO09BQ0F5OUI7T0FDQUU7T0FDQTEvQjtPQUNBcnZCO09BRUFzdEQ7T0FFQXhuRDtPQUVBc0M7T0FDQXNsRDtPQUNBajhDO09BRUF5OEM7T0FFQUM7T0FFQWg4QjtPQUNBNjhCO09BRUFnb0I7T0FDQVE7O2VBMm9CTXJ2RSxPQUFPK21ELElBQUssNEJBQUxBLEdBQTRCO2VBQ25DOThCLE9BQU81NUI7UUFDQyxJQUFOb3dCLElBQU0sV0FDVixXQWpwQkpvbUMsWUFncEJRcG1DLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBSkR6Z0I7Y0F2cUJOdXNCO2NBQ0F5RTtjQUNBODFCO2NBQ0EzZ0M7Y0FDQWdCO2NBQ0F0akI7Y0FDQW9sQjtjQUNBeTlCO2NBQ0FFO2NBQ0ExL0I7Y0FDQXJ2QjtjQUVBc3REO2NBRUF4bkQ7Y0FFQXNDO2NBQ0FzbEQ7Y0FDQWo4QztjQUVBeThDO2NBRUFDO2NBRUFoOEI7Y0FDQTY4QjtjQStvQk01OEI7Y0E3b0JONGtEO2NBQ0FRO0lBK0NpQixTQXVtQlhtRCxjQUFVLFlBQU07SUF2bUJMLFNBd21CWEMsTUFBSXA4RSxFQUFFOHZELEdBQUdFLEdBQUcxNUM7TUFBSSxTQUFadFcsS0FBaUIsaUJBQWY4dkQsR0FBR0UsR0FBRzE1QyxTQUFTLFFBQXFCO0lBeG1CL0IsU0EwbUJYK2xFLFVBQVV2c0IsR0FBR0UsR0FBRzlvRDtNQUNaLG1CQURZQSxHQUNBLGlCQURBQTs7WUFFRnFSLGNBQVRDLHNCQUZLczNDLE1BRUl2M0MsT0FGRHkzQyxHQUVpQztNQUN6QyxRQUFLO0lBN21CQyxTQSttQlhzc0IsU0FBT3Q4RSxFQUFFOHZELEdBQUdFO1VBQ0QxdkQsRUFESk4sS0FDTXNNO01BQ2I7V0FEV2hNO2NBR1RrbEIsRUFIU2xsQixLQUdKMEssRUFISTFLO1VBR0csYUFKTHd2RCxHQUFHRSxHQUlWeHFDLElBQXNDLGtCQUgzQmxaLElBR050QixHQUFpQztjQUg3QmlNLFNBQUUxSyxTQUdYaVosRUFIV2xaLEtBQUZoTSxNQUFFZ007O1FBRUwsU0FJQTtJQXRuQkcsU0F3bkJYaXdFLE9BQUt2OEUsRUFBRTh2RCxHQUFHRTtNQUNaO1lBRE9od0Q7T0FDRCw4QnREM3RCYixPc0Q0c0JTcThFLFVBY092c0IsR0FBR0U7TUFDTixVQUNNLElBQUw5b0QsV0FBSyxrQkFBTEE7TUFDRyxRQUFJO0lBM25CRCxTQTZuQlhzMUUsU0FBT3g4RSxHQUFJLGdCQUFKQSxLQUFrQjtJQTduQmQsU0E4bkJYeThFLFFBQU16OEUsR0FBSSxpQkFBTztJQTluQk4sU0F1b0JiMDhFLFNBQU9sK0UsR0FBZ0IseUJBQWhCQSxFQUErQjtJQXZvQnpCLFNBd29CYm0rRSxTQUFRMW5ELEdBQXFCLHlCQUFyQkEsRUFBb0M7SUF4b0IvQixTQTBvQmIybkQsVUFBUzV4RSxFQUFjeE0sR0FBNkIseUJBQTNDd00sRUFBY3hNLEVBQWlEO0lBMW9CM0QsU0Eyb0JicStFLGVBQWM3eEUsRUFBY3hNLEdBQ3RCLHlCQURRd00sRUFBY3hNLEVBQ0c7SUE1b0JsQixTQTZvQmJzK0UsVUFBUzl4RSxFQUFjeE0sRUFBUXkyQixHQUNqQyx5QkFEV2pxQixFQUFjeE0sRUFBUXkyQixFQUNGO0lBOW9CaEIsU0Erb0JiOG5ELFlBQVcveEUsRUFBY3hNLEdBQWdCLHlCQUE5QndNLEVBQWN4TSxFQUFvQztJQS9vQmhELFNBZ3BCYncrRSxZQUFXaHlFLEVBQWN4TSxHQUFnQix5QkFBOUJ3TSxFQUFjeE0sRUFBb0M7SUFocEJoRCxTQWtwQmJ5K0UsV0FBVTdrRSxHQUFlOU4sR0FBUzROLEdBQWUzTixHQUFTaks7TUFDNUQseUJBRFk4WCxHQUFlOU4sR0FBUzROLEdBQWUzTixHQUFTakssRUFDL0I7SUFucEJkLFNBcXBCYjQ4RSxXQUFVbHlFLEdBQW1DLHlCQUFuQ0EsRUFBc0Q7SUFycEJuRCxTQXNwQmJteUUsZ0JBQWVueUUsR0FBbUMsMEJBQW5DQSxFQUEyRDtJQXRwQjdELFNBdXBCYm95RSxXQUFVcHlFLEVBQWNzTCxHQUFlLDBCQUE3QnRMLEVBQWNzTCxFQUE2QztJQXZwQnhELFNBd3BCYittRSxhQUFZcnlFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUF4cEJ4QyxTQXlwQmJzeUUsYUFBWXR5RSxHQUFzQiwwQkFBdEJBLEVBQXlDO0lBenBCeEMsU0EwcEJidXlFLFlBQVdubEUsR0FBY0YsSUFBc0IsMEJBQXBDRSxHQUFjRixHQUE0QztJQTFwQnhELFNBNHBCYnNsRSxPQUFLN0osS0FBS3AvQztNQUNaLE1BRE9vL0MsZ0JBRUcsYUFETnJ6RTtNQUVKLFdBREl5NUUsSUFGUXhsRDtNQUNaLElBRUEsS0FGSWowQixVQUVKOztZQUNBdEc7UUFBc0I7b0JBRmxCKy9FLElBRUovL0UsRUFBb0MsaUJBSjdCMjVFLEtBSVAzNUU7VUFBc0IsU0FBdEJBOzs7TUFDQSxPQUhJKy9FLEdBR0Q7SUFqcUJZLFNBbXFCYjBELFFBQU0xRCxJQUFJcEc7TUFDSixJQUFKcnpFLEVBQUksU0FEQXk1RTtNQUNBO1dBQUp6NUUsTUFEUXF6RSxnQkFHcUI7UUFDL0IsU0FIRXJ6RSxVQUdGOzs7VUFDRTtZQUFNLG9CQUxGeTVFLElBSU4vL0U7WUFDUSxXQUNJO1lBREosSUFFQ2k3QjtZQUFZLEdBQVpBLE1BQVksaUJBUFgwK0MsS0FJVjM1RSxVQUljO1lBSE4sU0FEUkE7OztpQkFNQSxXQVZNKy9FOzs7MERBV0ssb0JBQUk7SUE5cUJGO2VBb3JCVHB3RSxPQUFPc3JCLEVBQUUzZTtRQUNILElBQUpsVixFQUFJLFNBREM2ekI7UUFFVCxXQURJN3pCLEVBRE9rVjtRQUNILElBQ1IsS0FGUzJlLHFCQUVUOztjQUNBajdCO1VBQ0U7c0JBSEVvSCxFQUVKcEgsRUFDYyxpQkFKTGk3QixFQUdUajdCO1lBQ0UsU0FERkE7OztRQUdBLE9BTElvSCxDQUtIO2VBQ0NnVixLQUFLOHpDLEtBQUtqMUI7UUFDWixpQkFEWUEscUJBQ1o7O2NBQ0FqN0I7VUFDRTtxQkFGRXdyQixLQUVlLHNCQUhQeVAsRUFFWmo3QjtZQUNPLHdCQUhBa3dEO1lBR0wsU0FERmx3RDs7O1FBR0EsT0FKSXdyQixJQUlGO2VBQ0FqZSxNQUtzQm5HLEVBQUY2ekI7UUFKdEIsUUFJc0JBLGFBSFgsZUFHYTd6QjtRQUhiLEdBRFBXLFFBQ0FhLE1BQ2dCO1FBRnBCLElBSUUsSUFKRWIsWUFJc0IvSDtRQUN0QjtrQkFEc0JBO1lBR2Qsb0JBSFlvSCxFQUFFcEg7WUFHZDtjQUdGLGdCQUFXLHNCQU5DaTdCLEVBQUlqN0I7Y0FNYix3QkFEQTBqRixLQUVFLFFBUFcxakY7Y0FRWDtZQUpDO1VBSEUsU0FTTztlQUV2QmdRLFFBQVE1STtRQUNBLElBQU5XLElBQU0sU0FEQVg7UUFDQSxTQUFOVyxJQUNZO1FBRE4sVUFHRixVQUpFWDtRQUlGO1VBR0YsZ0JBU1EsaUJBZlZXLElBS0s0N0UsSUFVSyxJQWZWNTdFLFlBTWlCL0g7VUFDYjtvQkFEYUE7Y0FHTCxzQkFWTm9ILEVBT1dwSDtjQUdMO2dCQUdGLElBREcwakY7Z0JBQ0gsaUJBTktqOEUsRUFBRXpILFlBS0owakY7Z0JBQ0gsUUFOTzFqRjs7Y0FJRDtZQUhFLFVBREh5SDtRQUZQLFFBWVE7ZUFDbEJ3NEUsYUFBYTc0RSxFQUFFNnpCLEVBQUUzZTtRQUNuQixhQURlbFY7UUFDZixTQURpQjZ6QixxQkFDakI7O2NBQ0FqN0I7VUFDRTtzQkFIYW9ILEVBRWZwSCxFQUNjLGlCQUhHaTdCLEVBRWpCajdCO1lBQ0UsU0FERkE7OztRQUdBLGtCQUxlb0gsRUFBSWtWLEVBS1A7ZUFDVmxNLFVBQVVoSjtRQUdILGlCQUhHQSxXQUNJcEg7UUFDZDttQkFEY0E7VUFDZDs7O1lBQVUscUJBRkFvSCxFQUNJcEg7WUFDSixhQURJdUc7WUFDSjtVQURaLFlBRXNCOztrQkF6RHBCb0osT0FPQXlNLEtBTUE3TyxNQTVDSjIxRSxXQTZESWx6RSxRQWtCQWl3RSxhQU1BN3ZFO0lBMXVCUztNdERsR3BCLElzRHMxQmE3QztlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksdUJBQUpBLEVBQVk7OytCQUQ5QjBJLE1BQ0E2TztPQWgwQlY4ZjtPQUNBeUU7T0FDQTgxQjtPQUNBM2dDO09BQ0FnQjtPQUNBdGpCO09BQ0FvbEI7T0FDQXk5QjtPQUNBRTtPQUNBMS9CO09BQ0FydkI7T0FFQXN0RDtPQUVBeG5EO09BRUFzQztPQUNBc2xEO09BQ0FqOEM7T0FFQXk4QztPQUVBQztPQUVBaDhCO09BQ0E2OEI7T0FFQWdvQjtPQUNBUTs7ZUFzeUJNcnZFLE9BQU8rbUQsSUFBSyw0QkFBTEEsR0FBNEI7ZUFDbkM5OEIsT0FBTzU1QjtRQUNDLElBQU5vd0IsSUFBTSxXQUNWLFdBNXlCSm9tQyxZQTJ5QlFwbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQWwwQk51c0I7Y0FDQXlFO2NBQ0E4MUI7Y0FDQTNnQztjQUNBZ0I7Y0FDQXRqQjtjQUNBb2xCO2NBQ0F5OUI7Y0FDQUU7Y0FDQTEvQjtjQUNBcnZCO2NBRUFzdEQ7Y0FFQXhuRDtjQUVBc0M7Y0FDQXNsRDtjQUNBajhDO2NBRUF5OEM7Y0FFQUM7Y0FFQWg4QjtjQUNBNjhCO2NBMHlCTTU4QjtjQXh5Qk40a0Q7Y0FDQVE7SUErQ2lCLFNBa3dCWDRFLGNBQVUsWUFBTTtJQWx3QkwsU0Ftd0JYQyxNQUFJNzlFLEVBQUVpMUIsRUFBRTNlLEdBQUksU0FBUnRXLEtBQWEsaUJBQVhpMUIsRUFBRTNlLFNBQVMsUUFBaUI7SUFud0J2QixTQXF3Qlh3bkUsWUFBVTdvRCxFQUFFL3RCO01BQ2Q7UUFDSyxZQUZTQSxPQUFGK3RCLGFBRXlCO1FBQ25DLFNBSFVBLHFCQUdWOzs7VUFDRTtZQUFNLG9CQUpJL3RCLEVBR1psTjtZQUNRO2NBQ1EsSUFBUDZFO2NBQVksR0FBWkEsTUFBWSxpQkFMWG8yQixFQUdWajdCOzs7O1k5QzFWQSxjOEM2VlM7O1FBSFQ7OzswREFNVyxvQkFBSztJQTl3QkwsU0FneEJYK2pGLFNBQU8vOUUsRUFBRWkxQjtVQUNFMzBCLEVBREpOLEtBQ01zTTtNQUNiO1dBRFdoTTtjQUdUa2xCLEVBSFNsbEIsS0FHSjBLLEVBSEkxSztVQUdHLGVBSkwyMEIsRUFJUHpQLElBQWtDLGtCQUh2QmxaLElBR050QixHQUE2QjtjQUh6QmlNLFNBQUUxSyxTQUdYaVosRUFIV2xaLEtBQUZoTSxNQUFFZ007O1FBRUwsU0FJQTtJQXZ4QkcsU0F5eEJYMHhFLE9BQUtoK0UsRUFBRWkxQjtNQUNUO1lBRE9qMUI7T0FDRCw4QnRENTNCYixPc0R1MkJTODlFLFlBb0JPN29EO01BQ0gsVUFDTSxJQUFML3RCLFdBQUssa0JBQUxBO01BQ0csUUFBSTtJQTV4QkQsU0E4eEJYKzJFLFVBQU9qK0UsR0FBSSxnQkFBSkEsS0FBa0I7SUE5eEJkLFNBK3hCWGsrRSxRQUFNbCtFLEdBQUksaUJBQU87SUEveEJOOzs7O1FBK1liaTVFO1FBZ0RJQztRQTdDSkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFHQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFNQUU7OztXQWtERUUsT0FDQUMsTUFPQUUsU0FTQUMsT0FLQUMsU0FDQUM7O1FBU0ZDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBR0FDO1FBRUFDO1FBRUFDO1FBR0FDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBUUFHOzs7V0FtRUVHLE9BQ0FDLE1BT0FFLFNBU0FDLE9BS0FDLFNBQ0FDOztRQVNGQztRQUdBRTtRQUNBQztRQUVBQztRQUVBQztRQUNBQztRQUVBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQU9BQzs7O1dBK0ZFRyxPQUNBQyxNQWFBRSxTQVNBQyxPQUtBQyxVQUNBQzs7O1V0RGo0QlQ7O0lzRGtHb0I7YWhEOURmQyxpQkFBaUJDLFdBQVdsbEYsaUJBQWlCaUk7TUFVNUMscUJBVjRDQSxjQVcxQyxPQVh5QmpJO01BWXpCLDhCQVowQ2lJLGNBQzlCM0M7TUFDZjtnQkFEZUE7VUFFUCxjQUhTNC9FLFdBQTRCajlFLEtBQzlCM0MsSUFFZ0IsUUFGaEJBO1VBR1YsTUFIVUEsVUFJSitRLElBSkkvUTtVQUtmO29CQURXK1E7Y0FFSCxjQVBTNnVFLFdBQTRCajlFLEtBS2xDb087ZUFFb0IsYUFQY3BPLEtBS2xDb08sYUFBRWpDLElBQUZpQztjQUdOLFFBSE1BOztZQUNHLGFBTitCcE8sT0FLaENtTTtRQUhDLGFBRitCbk0sVUFZVDthQU1wQ2s5RSxnQkFBZ0JELFdBQVdsbEYsaUJBQWlCaUk7TUFjM0MscUJBZDJDQSxjQWV6QyxPQWZ3QmpJO01BZ0J4Qiw4QkFoQnlDaUksY0FDekIzQztNQUNuQjtnQkFEbUJBO1VBRVgsY0FIUTQvRSxXQUE0Qmo5RSxLQUN6QjNDLElBRVksUUFGWkE7Y0FJWitRLElBSlkvUTtVQUtuQjtvQkFETytRO2NBRUMsY0FQUTZ1RSxXQUE0Qmo5RSxLQUtyQ29PO29CQUlZK2tFLElBSlova0U7Z0JBS1A7MEJBRG1CK2tFO29CQUVYLGNBWFE4SixXQUE0Qmo5RSxLQVN6Qm16RTtzQkFFWSxRQUZaQTtvQkFHZCxhQVp1Q256RSxPQVN6Qm16RTtrQkFDTCxhQVY4Qm56RTtjQVF2QyxRQUhFb087O1lBQ08sT0FOYXJXO1FBRWIsYUFGOEJpSSxVQWdCSjthQTBCdENpOUUsV0FBVzEvRSxFQUFFMUUsR0FBSSw4QkFBTjBFLEVBQUUxRSxNQUFlO2FBQzVCc2tGLFlBQVk5L0U7TUFBSTtrQ0FBSkE7T0FBSSxxQkFBdUIsZ0JBQTNCQTtpQkFBdUM7YUFDbkQrL0UsWUFBWS8vRTtNQUNkLHFCQURjQTtNQUNkOztvQ0FEY0E7c0JBRTZCLHFCQUFoQixNQUZiQTtRQUVxQzs7cUNBRnJDQTt1QkFHNkIscUJBQWhCLE1BSGJBOzs7OztNQUdzQyxXQUFDO2FBQ25EZ2dGLGFBQWFyOUUsS0FBS3M5RSxNQUNwQixtQkFEb0JBLEtBQUx0OUUsS0FDbUI7YUFFaEN1OUUsZ0JBQWlCbmpFLE9BQU84dEM7TUFDMUI7bUNBRG1COXRDO09BQ25CLDRCQUQwQjh0QztNQUMxQixHQUFJaHVDLFNBQWlDc2pFO1FBRTNCLElBQUp0Z0YsRUFBSSxNQUhnQmdyRCxTQUNXczFCLFFBQWpDdGpFO1FBR0MseUJBRENoZCxFQUhha2Q7b0JBS1YsTUFMaUI4dEMsV0FDV3MxQixRQUFqQ3RqRTs7TUFRRixRQUFJOztNQUdGOzs7OztJQUNNLFNBNkpSdWpFLE1BblF1QmxnRjtNQUMzQiw0QkFEMkJBLEdBRW5CLFdBREo0QjtNQUVKLFNBRElOO01BREosSUFFQSxLQUZJTSxVQUVKOztZQUNBdEc7UUFDRTtVQUFHLDBCQUxzQjBFLEVBSTNCMUU7V0FFTyxXQUpIZ0csRUFGWTNHOztXQU9ULFNBTEgyRyxFQUtzQixnQkFQQ3RCLEVBSTNCMUU7VUFHK0IsU0FIL0JBOzs7TUFLQSxTQVBJZ0c7TUFPSixnQkFQSUE7SUFvR1EsU0E4SlI2K0UsY0E3SmNyeEQsSUFBSzNzQixNQUFPQyxPQUFRQyxPQUFPbWpEO01BQzNDLEdBRG9DbmpEO09BSVE7VUFKUkE7UUFJVyxnQkFKWEEsT0FBUkQsZ0JBTXFCLFVBQVEsTUFGbEI1Qzs7OztTQUpYNEM7T0FHZ0IsUUFIaEJBLGVBR2dCLFlBQU8sTUFBWmlnRDs7O01BQXJDO1NBSG1CbGdEO09BRXVCLFFBRnZCQSxjQUV1QixZQUFPLE1BQVptZ0Q7OztNQUNyQyxTQURBO01BREYsNEJBQWtCLE1BMkpoQjQ5QixTQTVKY3B4RCxJQUEyQjAyQixhQU1zQjtJQUNwRCxTQUFYNDZCO01OOUhQLE9Nb0NLWCxpQkE0REVDLFdBSEFsbEY7SUFrQ1UsU0FBVjZsRjtNTi9IUCxPTXNES1YsZ0JBMENFRCxXQUhBbGxGO0lBa0NVOzs7T0FuQ1ZEO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FnbEY7T0FDQUU7T0FDQUM7T0FJQUM7T0FHQUU7O09BMEtBRTtPQUNBQztPQXRKQUM7T0FDQUM7SUFBVSxTQVFWQyxhQUFXdGdGLEVBQUUxRTtNQUFZLHNCQUFkMEUsRUFBRTFFLEdBQVksWUFBSm9IO01BQUk7Ozt1QkFBSkE7aUJBQTJDO0lBUnRELFNBU1Y2OUUsY0FBWXpnRjtNQUNkO2tDQURjQTtPQUNkLHFCQUF3QixnQkFEVkE7Ozs7OEJBRWEsZ0JBRmJBOzs7OytCQUdhLGdCQUhiQTs7Ozs7aUJBRzBCO0lBWjVCLFNBYVYwZ0YsY0FBWTFnRjtNQUNkLHVCQURjQTtNQUNkOztvQ0FEY0E7c0JBRTZCLHFCQUFoQixNQUZiQTtRQUVxQzs7c0NBRnJDQTt3QkFHNkIscUJBQWhCLE1BSGJBO1VBR3NDOzt3Q0FIdENBOzBCQUk2QixxQkFBaEIsTUFKYkE7WUFJc0M7O3lDQUp0Q0E7MkJBSzZCLHFCQUFoQixNQUxiQTs7Ozs7Ozs7O01BS3VDLFdBQUM7SUFsQjFDLFNBbUJWMmdGLGVBQWFoK0UsS0FBS3M5RTtNQUNyQiwrQkFEcUJBLFNBQ3JCLHNCQURnQnQ5RTtNQUNoQjtPQUNTOzs7V0FGT0E7K0RBQUtzOUU7O1FBSU8sdUJBSlBBO2FBSUksa0JBQXhCLGtCQUZJLy9FOzs7TUFQSixXQVN1RDtJQXZCM0MsU0F5QlYwZ0Ysa0JBQWlCN2pFLE9BQU84dEM7TUFDMUI7bUNBRG1COXRDO09BQ25CLDRCQUQwQjh0QztNQUMxQixHQUFJaHVDLFNBQWlDc2pFO1FBRTNCO2lCQUhnQnQxQixTQUNXczFCLFFBQWpDdGpFO1NBRzRCLHVCQUpiRTtRQUlVLHlCQUF4QixrQkFEQ2xkO29CQUVHLE1BTGlCZ3JELFdBQ1dzMUIsUUFBakN0akU7O01BUUYsUUFBSTtJQWxDTTtNQXNDUixtQ0FERmdrRTs7Ozs7YUFFQUMsUUFBTTVnRjtNQUNSLDRCQURRQSxHQUVBLFdBREo0QjtNQUVKLFNBRElOO01BQ0osU0FpQkl1L0UsT0FBTy9nRjtRQUFJO2NBQUpBO2NBQUk4UDtVQUFtQjtxQkFsQjlCdE87WUFrQjhCLFNBQW5Cc087ZUFBSjlQLE1BQUk4UDs7UUFuQmYsUUFtQjhEO01BakI5RCxTQUNRa3hFLGVBQUt4bEY7UU4xS2xCLElNMEtrQnVHO1FBQ1g7YUFEV0EsUUFIVEQsRUFJWSxnQkFIWk47VUFJSSxJQUdKb0IsRUFISSxnQkFOQTFDLEVBSUs2QjtVQUVMLFVBR0phO1lBRlE7OztxQkFHUnErRSx1QkFOU2wvRTswQ0FNVGsvRSxnQkFOU2wvRTtvQkFLVGE7WUFEUTs7O3FCQUVScStFLHVCQU5TbC9FOzBDQU1Uay9FLGdCQU5TbC9FO1VBS0QsU0FQUlAsRUFPQW9CO1VBSEksSUFHSSxJQUxDYjttQkFLK0I7TUFONUMsU0FPSWsvRSxnQkFBUWpoRixFQUFFeEU7WUFBRnNWLE1BQUUvTztRQUNaO2FBRFlBLFFBVFZELEdBV0EsU0FWQU4sTUFVQSxjQUZRc1A7VUFLRiwwQkFmRjVRLEVBVU02QjtVQUtKO1lBQ0ksWUFORitPO1lBTWtCLFNBZDFCdFA7WUFjMEIsU0FOaEJPO1lBTWdCO21EQVp0QmkvRTs7O1lBYU0sUUFQQWovRSxZQU9BLElBUEYrTyxvQkFBRS9PO1VBUUEsT0FSRitPO1VBUUU7aURBZE5rd0UsaUJBTU1qL0U7d0NBTk5pL0UsVUFNTWovRSxNQVNUO01BaEJMLFNBQ1FxaUQsS0FBSzVvRCxHTjFLbEIsdUJNMEthd2xGLFNBQUt4bEY7TUFrQmI7c0JBcEJJZ0csRUFxQmE7YUFnQ2YwL0UsbUJBQW1CeGhGO01BQ1EsS0FBMUIsV0FEa0JBLFdBQ1EsV0FEUkE7T0FHYixrQkFIYUEsTUFJWixnQkFKWUE7TUFFVixtREFGVUEsR0FNbEI7YUFJRHloRixnQkFBY255RCxJQUFLM3NCLE1BQU9DLE9BQVFDLE9BQU9takQ7TUFDM0MsR0FEb0NuakQ7T0FTQTtVQVRBQTtRQVNHO29CQVRIQSxPQUFSRDs7V0FXYSxZQUFRLG1CQUhWNUM7Ozs7O1NBUlg0QztPQU9nQixRQVBoQkEsZUFPZ0IsWUFBTyxtQkFBWmlnRDs7OztTQVBsQmxnRDtPQU11QixRQU52QkEsY0FNdUIsWUFBTyxtQkFBWm1nRDs7O01BRDNCOzBCQUFtQixNQXRFN0JzK0IsUUFpRXlDcDdCO09BcEJuQyxXQUFSLHNCQURZeGxEOztNQUVaO2lCQUNPMEM7VU5yTlo7VU1zTlMsU0FER0E7Ozs7Ozs7Ozs7Ozs7VUUyVEgsaUJGeFRJLFNBTEpwQixNQUtJLFNBTEpBLEVBRUdvQixJQUtDLFNBUEpwQixFQUVHb0IsRUFLb0I7UUFSZjFDO01BMEJBLHVCQXhCWixTQURJc0I7TUF1QkYseURBSGN3dEIsWUFhZjthQU9Db3lELGVBQWVsaEY7TUFMakIsb0NBS2lCQTtNQUxqQjtRQUlrQywwQkFDakJBO1FBTEQ7Ozs7UUFJa0IsSUVzUjlCLG1DRnRSdUMsZ0JBQzFCQTs7OztRQUVPLGVBRlBBLElBRVosc0JBRllBO1FBRVgsZ0JBRldBO01BR1osa0JBSFlBLEVBR0w7YUFDVm1oRixVQUFRbmhGO01BQ1U7NEJBRFZBO09BQ1U7O09BQ1Ysb0JBMUhSc2dGLGFBSEF6bEYsbUJBNEhVdW1GO01BQ0YsV0FETEMsTUFDREMsSUFDTzthQUNUQyxXQUFTdmhGO01BQ1UseUJBRFZBLEdBQ1U7OEJBN0huQnNnRixhQUhBemxGLG1CQWdJV3VtRixLQUNvQzs7OztPQWxJL0N4bUY7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQXVsRjtPQUNBQztPQUlBQztPQU1BQztPQU1BQztPQVlBQztPQUVBQztPQWlFQUs7T0E0QkFNO09BSkFKO0lBc0JXLFNBQVhLO01OclJQLE9Nb0NLL0IsaUJBbUdFYSxhQW1JQXJsRjtJQVlVLFNBQVZ3bUY7TU50UlAsT01zREs5QixnQkFpRkVXLGFBbUlBcmxGO0lBWVU7OztPQWJWRDtPQUNBQztPQUNBQztPQUNBQztPQXJJQW1sRjtPQUNBQztPQUlBQztPQU1BQztPQU1BQzs7T0EySEFSO09BQ0FDO09BQ0FxQjtPQUNBQztLQUFVOzs7O0tBN01kQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUdBQztLQUNBQzthQXlNRUMsU0FBT25DLFFBQVExMUI7TUFDakIsSUFBSS9vRCxFQUFKLHNCQURTeStFO01BRUcsU0FEUnorRSxPQUNRLGFBRkh5K0UsUUFDTHorRTtPQUdXLFdBSk55K0UsUUFJTSxJQXpOZndCLFVBcU5pQmwzQjtNQUdaLFdBSEkwMUIsUUFBUTExQixTQUlnQjthQUUvQjgzQixZQUFZaGdGLEtBQUtzOUU7TUFDaEIsc0JBRFd0OUUsS0FBS3M5RTtlQUVkO2lCQUZTdDlFOztpQkFFVCxzQkFGU0EsUUFFVCxzQkFGY3M5RTtlQUdkLHFDQUFrQzthQUVyQzJDLGNBQWNqZ0Y7TUFDaEIsOEJBRGdCQSxjQU1HeWE7TUFDakI7UUFBWSxRQURLQSxTQUNMLGFBUEV6YSxLQU1HeWE7VUFFVCwwQkFSTXphLEtBTUd5YTtZQUVXLFFBRlhBLFlBTEY1aEI7WUFDZjtjQUFZLFFBREdBLE9BQ0gsYUFGRW1ILEtBQ0NuSDtnQkFFUCwwQkFITW1ILEtBQ0NuSDtrQkFFYSxRQUZiQTtnQkFHViw2QkFKU21ILFFBTUd5YTtjQUprQjtVQU85QixRQUhZQTs7UUFDa0IsU0FJRjthQUVqQ3lsRSxVQUFVbGdGO01BQ0osSUFBSmIsRUFBSSxjQURJYTtNQUNKLGFBQUpiLFVBQ2tCLE1BRlZhLEtBRVUsc0JBRlZBLFFBQ1JiLFFBQzREO2FBRTlEZ2hGLGVBQWVuZ0Y7TUFDVCxJQUFKYixFQUFJLGNBRFNhO01BQ1QsYUFBSmI7ZUFDVTtlQUNULE1BSFlhLE9BR1osc0JBSFlBLFFBQ2JiLE1BRTJDO2FBRTdDaWhGLGlCQUFpQnBnRjtNQUNYLElBQUpiLEVBQUksY0FEV2E7TUFDWCxhQUFKYixFQURlYSxLQUVLLE1BRkxBLE9BRUssc0JBRkxBLFFBQ2ZiLE1BQzhEO1FBS2hFa2hGLDJCTnpVTDthTTJVS0MsZUFBZUMsU0FBU3RtRSxPQUFPRztNQUNqQzt5QkFIRWltRTtPQUdGO3FCQUhFQSx1QmM5U0EvMkUsaUJkOFNBKzJFO09BR1E7TUFDTSxnQkFGQ0UsU0FFRCx5QkFGVXRtRSxPQUN0QnVtRSxJQUQ2QnBtRSxRQUU0QjtRQUczRHFtRSx5QkE5UEZmO2FBZ1FFZ0Isa0JBQWtCbmpGLEdBQUksMkJBQUpBLEVBQUksUUFBMEI7YUFDaERvakYseUJBQXVCLE9BSHZCRix3QkFHNkM7YUFFN0NHLFVBQVl2M0QsSUFBbUNwUCxPQUFPRztNQUN4RCxHQURjaVA7T0FBVyxRQUFYQSxnQkFBV0M7O1dBQVhpM0QsU0FMWkU7TUFNRixTQUFRSSxTQUFTbmtGO1FOdFZwQixJTXNWb0I0OUM7UUFDZjtVQUFXLElBQVB0NkMsS0FBTyxlQUZDdWdGLFNBQW1DdG1FLE9BQU9HO1VBRTNDO1lBRTRELHVCQUEzRCxjQUZScGE7Z0JBSUMrRjs7O2NBQ0gsV0FOYXUwQyxVQU1XLE1BRHJCdjBDO2NBQ2tDLGNBTnhCdTBDOztrQkFLVnYwQyxHQUN3RDtNQU4vRCxrQkFPYTthQUVYZzdFLGVBQWlCMTNELGNBQ21DcFAsT0FBT0c7TUFDN0QsR0FGbUJpUCxJQUFPLFFBQVBBLFlBQU9DLGFBQVB4cEI7TUFFbkIsUUFGaUQsa0JBQVJtaEYsTUFBUUQsZUFBUkM7TUFFekM7T0FEOEIsa0JBQVhWLFNBQVdXOztXQUFYWCxTQWhCakJFO01BaUJGLFNBQVFJLFNBQVNua0Y7UU5qV3BCLElNaVdvQjQ5QztRQUNmO1VBQVcsSUFBUHQ2QyxLQUFPLGVBRk11Z0YsU0FBbUN0bUUsT0FBT0c7VUFFaEQ7WUFHUixZQUhDcGEsS0FHRCx3QkFOY0YsUUFBc0JtaEYsTUFHbkNqaEY7O2dCQUlDK0Y7OztjQUNILFdBTmF1MEMsVUFNVyxNQURyQnYwQztjQUNrQyxjQU54QnUwQzs7a0JBS1Z2MEMsR0FDd0Q7TUFOL0Qsa0JBT2E7Ozs7T0E5UmJtNUU7T0FDQUM7T0FDQUM7T0FxTkVXO09Bbk5GVDtPQUNBQztPQUNBQztPQXVORVE7T0F0TkZQO09Bd09FUztPQVNBRTtPQUxBRDtPQXRPRk47T0FDQUM7T0FmQWI7T0E0UUUyQjtPQVVBRztPQVpBSjtPQURBRDtPQWhRRmhCO09BQ0FDO09BQ0FDOzthQzVERXVCLE1BQUl6akYsRUFBRUMsR0FBVyxZQUFiRCxPQUFFQyxLQUFGRCxPQUFFQyxLQUE0QzthQUVsRHlqRixNQUFJMWpGLEVBQUVDLEdBQVcsWUFBYkQsT0FBRUMsS0FBRkQsT0FBRUMsS0FBNEM7YUFFbEQwakYsSUFBSTNqRixHQUFjLGNBQWRBLFlBQWtDO2FBRXRDNGpGLEtBQUs1akYsR0FBeUIsWUFBekJBLFlBQStCO2FBRXBDNmpGLElBQUk3akYsRUFBRUM7TUFBdUIsWUFBekJELE9BQUVDLE9BQUZELE9BQUVDLEtBQUZELE9BQUVDLE9BQUZELE9BQUVDLEtBQ3lDO2FBRS9DNmpGLElBQUk5akYsRUFBRUM7TUFDSyxHQUFrQixTQUR2QkEsU0FDSyxTQURMQTtRQUVFLE1BRkZBLFlBR0UsRUFIRkEsT0FFRlQsSUFGRVM7UUFJb0IsYUFKdEJELE9BRUFSLElBRkFRLFFBR0F5WCxHQUhBelgsT0FFQVIsSUFGQVEsUUFHQXlYO01BSUksUUFQRnhYLFlBUUUsSUFSRkEsT0FPRjJ4QixNQVBFM3hCO01BU29CLGFBRnRCMnhCLE1BUEE1eEIsZUFRQWlrQixLQURBMk4sTUFQQTV4QixlQVFBaWtCLElBRTZCO2FBRWpDOC9ELElBQUkvakYsR0FBSSxXQTFCUjlFLE1BMEJJOEUsRUFBYTthQUVqQmdrRixNQUFNaGtGLEdBQWdCLE9BQWhCQSx5QkFBZ0M7YUFFdENpa0YsS0FBS2prRjtNQUVXLGVBRlhBLE1BRWtDLFdBRmxDQTtNQUVrQyxHQUFyQ1IsUUFDWSxPQURXckU7TUFFdEIsR0FGc0JBLFFBRU4sT0FGakJxRTtNQUdDLEdBSHNCckUsS0FBdkJxRSxHQUlNLElBQUowcEIsRUFKcUIvdEIsSUFBdkJxRSxFQUlnQixPQUpoQkEsSUFJd0MsZUFBdEMwcEI7TUFKWSxJQU1aZzdELElBTkYxa0YsSUFBdUJyRTtNQU1QLE9BTk9BLElBTWlCLGVBQXRDK29GLFVBQXNDO2FBRTFDdDFELElBQUk1dUIsR0FBVSxrQkFBVkEsVUFBbUI7YUFFdkJta0YsTUFBTXhrRixFQUFFaUQsR0FBZ0IsWUFBTCxTQUFYQSxLQUFGakQsRUFBOEIsU0FBNUJpRCxLQUFGakQsRUFBMEM7YUFFaER5a0YsS0FBS3BrRjtNUGpFVixHT2lFVUEseUJBQzBCO01BRWIsZUFIYkEsTUFHb0MsV0FIcENBO01BR29DLEdBQWQ3RSxLQUF2QnFFO09BR1E7VUFIZXJFLElBQXZCcUU7UUFDQStxQyxFQUdBLFVBSkEvcUMsS0FJb0Qsc0JBQUYsZUFEOUMwcEI7O09BR0k7WUFOUjFwQixJQUF1QnJFO1FBQ3ZCb3ZDLEVBTUEsVUFQdUJwdkMsS0FPMkIsaUJBRDlDK29GLE1BQzRDLGVBRDVDQTtNQUdSLFNBWktsa0YsS0FhMkIsWUFUNUJ1cUMsUUFKQ3ZxQyxPQUlEdXFDO01BRGMsSUFDZDg1QyxVQUpDcmtGLEtBSUR1cUM7TUFVZ0Isa0JBWE9wdkMsSUFDdkJvdkMsTUFXSDthQUVEKzVDLElBQUl0a0Y7TUFDTSxJQUFScUksRUFBUSxTQUROckksTUFDcUIsWUFBdkJxSSxJQUFnQyxTQUQ5QnJJLE1BQ0ZxSSxJQUFvRCxTQURsRHJJLE1BQ3dEO2FBRTVEdWtGLElBQUl2a0Y7TUFBb0Msb0JBQXBDQSxXQUF1QixxQkFBUixLQUFmQSxTQUErQzthQUVuRHdrRixJQUFJeGtGLEVBQUVDLEdBQVEsZUFBUkEsRUFBZSxJQUFqQkQsSUFBeUI7Ozs7T0FuRTdCL0U7T0FDQUM7T0FDQUM7T0FNQXdvRjtPQUVBQztPQU5BSDtPQUVBQztPQU1BRztPQWVBRTtPQVpBRDtPQThCQU07T0FoQkFKO09BRUFDO09BVUFyMUQ7T0FFQXUxRDtPQW1CQUc7T0FHQUM7T0FFQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09POURBeHNFOzs7T0FFQUU7T0FFQW5XO09BSUFEO09BSUFxVztPQVFBRztPQWVBTTs7T0FQQS9XO09BRUkwVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLeUNJSmtzRTtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBdC9CO2FBRUF1L0I7O2VBQ1c7ZUFDQTtlQUNJO2VBQ0U7ZUFDRDtlQUNFO2VBQ1Q7ZUFDQTtlQUNGO2VBQ007Z0JBQ0E7Z0JBQ0E7Z0JBQ0wsU0FBQztRQUtUQyxXQUNBQzthQVdNQyxNQUFNcFUsSUFBSXFVLElBQUlwbUYsRUFBRXFtRixJQUFJeGxGO01BQzFCLEdBRHNCd2xGLFFBQU5EO09BQ2UsMkJBRG5CclUsSUFBSXFVLElBQzJCLFdBRHZCcG1GLEVBQUpvbUY7TUFFTywwQkFGR3ZsRixJQUFKd2xGLHNCQUVqQjtNQUFrQjtZQUFsQmoyRTtRQUNFOzJCQUhTZzJFLElBQU1DLGdCQUVqQmoyRTtVQUVFLE1BSksyaEUsSUFBSXFVLElBQUlwbUYsRUFBRXFtRixZQUFJeGxGO1VBSW5CLFNBRkZ1UDs7O2NBR0k7YUFDSGsyRSxNQUFNdlUsSUFBSXFVLElBQUlwbUYsRUFBRXFtRixJQUFJeGxGO01BQzFCLFFBRHNCd2xGO1FBRUosMEJBRlF4bEYsSUFBSndsRixjQUVqQjtRQUFhO2NBQWJqMkU7VUFDRTs2QkFIU2cyRSxJQUFNQyxnQkFFakJqMkU7WUFFRSxNQUpLMmhFLElBQUlxVSxJQUFJcG1GLEVBQUVxbUYsWUFBSXhsRjtZQUluQixTQUZGdVA7Ozs7TUFEVywyQkFESjJoRSxJQUFJcVUsSUFDWSxXQURScG1GLEVBQUpvbUYsS0FLUDthQUNQRyxPQUFjbm5DLEtBQU1vbkMsT0FBbUJDLEtBQUt6bUY7TUFDcEMsdUJBRE1vL0MsS0FBTW9uQyxPQUFtQkMsTUFDL0IsS0FEK0JBO01BQy9CLGFBR1JDO2VBSEUzVTtlQURrQnlVO2tCQUtJLE1BSnRCelUsSUFJZ0MsZUFEbEMyVSxRQUo0QzFtRixFQUk1QzBtRixhQUp1Q0QsTUFDckMxVTtrQkFHZ0IsTUFIaEJBLElBRzBCLGVBQTVCMlUsUUFKNEMxbUYsSUFBTHltRixNQUNyQzFVLElBS3lCO2FBSTNCMFUsS0FBS2xqRjtNQUNDLHVCQUREQSxHQUVDLGlCQURKakQsS0FDSSxLQURKQSxVQUNJOztZQUNSeEU7UUFBb0I7VUFBUyw2QkFIdEJ5SCxFQUdQekg7VUFBb0IsaUJBRGhCc2MsRUFDSnRjO1VBQTZCLFNBQTdCQTs7O01BQ0EsT0FGSXNjLENBRUg7YUFPQ3V1RSxjQUFjNVU7TUFDa0IsZ0NBQXlCLEtBRDNDQTtNQUNoQixtQ0FBb0IsYUFESkEsV0FDc0Q7YUFvQnBFNlUsU0FBT3huQyxLQUFLb25DLFFBQ2Qsc0JBRFNwbkMsS0FBS29uQyxXQUNrQjthQUM5QkssTUFBSTlVLEtBQU0sbUNBQU5BLFFBQTJCO2FBQy9CK1UsTUFBSS9VO01BQU07NEJ2RGhLakIsMkJ1RGdLV0EsZUFBMkI7YUFPL0JnVixnQkFBY2hWO01BQXlCLHVDQUF6QkEsS0FBbUM7YUFLakRpVixTQUFTNW5DLEtBQUtvbkMsT0FBT3RtRjtNQUNmLElBQUpxRCxFQUFJLFNBREc2N0MsS0FBS29uQyxRQUVoQixpQkFESWpqRixHQURtQnJELEdBRXZCLE9BRElxRCxDQUVIO2FBTUMwakYsU0FBTzduQyxLQUFLb25DLE9BQU9VO01BQ3JCLHNCQURTOW5DLEtBQUtvbkMsVUFBT1UsS0FDYzthQWFqQ0MsZ0JBQWNwVjtNQUNrQix1QkFEbEJBO01BQ2hCLG1DQUFvQixhQURKQSxXQUMyQjthQUd6Q3FWLE1BQWdCN2pGLEVBQTBCakQ7TUFDdEMsaUNBRFlpRDtNQUNaLGFBRWUsY0FISEEsS0FBMEJqRCxJQUU3QixjQUZHaUQsS0FBMEJqRCxHQUc0QjthQU90RSttRixPQUFjam9DLEtBQU1vbkMsT0FBbUJVLElBQUlsbkY7TUFDbkMsSUFISyt4RSxJQUdMLFNBRE0zeUIsS0FBTW9uQyxPQUFtQlU7TUFDL0IsR0FEWVY7UUFEdEI7Y0FDeUNVO2NBRHpDN2tGO1VBQW9COzBCQURMMHZFLElBQ2YxdkUsSUFBcUMsV0FDUXJDLEVBRDdDcUM7WUFBb0IsU0FBcEJBO2VBQ3lDNmtGLFFBRHpDN2tGOztlQURlMHZFO01BR0wsSUFKVixLQUd5Q21WLFlBSHpDOzs7UUFBeUI7d0JBQ1ZuVixJQURmajJFLEVBQTBDLFdBR0drRSxFQUg3Q2xFO1VBQXlCLFNBQXpCQTs7O2FBQ2VpMkUsR0FNZ0M7YUFDN0N1VixTQUFrQmxvQyxLQUFNb25DLE9BQWtCbndEO01BQ25DO21CQURXK29CLEtBQU1vbkMsT0FBa0Jud0Q7T0FDbkMsSUFEaUJtd0Q7T0FPMUIsS0FQNENud0Q7T0FPNUM7OztRQUFzQzt3QkFObENreEQsR0FNSnpyRixJQUxJOEgsUUFLMEQsaUJBUGxCeXlCLEtBTzVDdjZCO1VBQXNDLFNBQXRDQTs7O01BQ0EsT0FQSXlyRixFQU9GO2FBS0FDLFVBQU9wb0MsS0FBS29uQyxPQUFPaUIsS0FBS0M7TUFDMUIsc0JBRFN0b0MsS0FBS29uQyxVQUFPaUIsS0FBS0MsTUFDZ0I7YUFleENDLGdCQUFjNVY7TUFDK0IsdUJBRC9CQSxLQUNrQixtQkFEbEJBO01BQ2hCOzJDQUFvQixhQURKQSxpQkFDeUM7YUFPdkQ2VixXQUFXcmtGLEVBQUVqRCxHQUFJLHFCQUFOaUQsS0FBRWpELEdBQStCO2FBQzVDdW5GLFlBQVl0a0YsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBZ0M7YUFlOUN3bkYsT0FBYzFvQyxLQUFNb25DLE9BQW1CaUIsS0FBS0MsS0FBSzFuRjtNQUN6QyxJQVBLK3hFLElBT0wsVUFETTN5QixLQUFNb25DLE9BQW1CaUIsS0FBS0M7TUFDcEMsR0FEWWxCO1FBTHRCO2NBSzhDa0I7Y0FMOUN4akQ7VUFDRTs7a0JBSXVDdWpEO2tCQUp2Q3BsRjtjQUNFOzhCQUhXMHZFLElBRWIxdkUsSUFERjZoQyxJQUV1QixXQUc0QmxrQyxFQUpqRHFDLElBREY2aEM7Z0JBRUksU0FERjdoQzttQkFJdUNvbEYsU0FKdkNwbEY7O3FCQURGNmhDO2VBSzhDd2pELFNBTDlDeGpEOztlQURlNnRDO01BT0wsSUFaVixLQVd5QzBWLGFBWHpDOzs7UUFDRTttQkFVNENDLGFBVjVDOzs7WUFDRTs0QkFHVzNWLElBTGZqMkUsRUFDRXNVLEVBQ3FCLFdBUzRCcFEsRUFYbkRsRSxFQUNFc1U7Y0FDRSxTQURGQTs7O21CQURGdFU7OzthQUtlaTJFLEdBVXNDO2FBQ25EZ1csV0FBa0Izb0MsS0FBTW9uQyxPQUFrQm53RDtNQUM1QztZQUQ0Q0E7T0FDNUMsV0FBSW94RCxPQUM0QyxpQkFGSnB4RDtPQUduQyxhQUhXK29CLEtBQU1vbkMsT0FDdEJpQixLQUNBQztPQUNLLElBSGlCbEI7T0FTMUIsS0FSSWlCO09BUUo7OztRQUNFO1VBQVUsSUFBTk8sSUFBTSxpQkFWZ0MzeEQsS0FTNUN2NkI7VUFDWSxHQUFOa3NGLG1CQVJGTjtXQVVBO1VBRlEsSUFFcUQsS0FWN0RBLGFBVTZEOztnQkFDL0R0M0U7WUFDRTs7Z0JBWEFtM0UsR0FNSnpyRixJQUxJOEgsUUFTRndNLElBVEV4TSxRQVVrQyxpQkFKaENva0YsSUFHSjUzRTtjQUNFLFNBREZBOzs7VUFIVSxTQURadFU7OztNQVFBLE9BZEl5ckYsRUFjRjthQUtBVSxVQUFPN29DLEtBQUtvbkMsT0FBT2lCLEtBQUtDLEtBQUtRO01BQy9CLHNCQURTOW9DLEtBQUtvbkMsVUFBT2lCLEtBQUtDLEtBQUtRLE1BQ2lCO2FBaUI5Q0MsZ0JBQWNwVztNQUM0QztrQ0FENUNBO09BQytCLG1CQUQvQkE7T0FDa0IsbUJBRGxCQTtNQUNoQjs7NkNBQW9CLGFBREpBO29CQUNzRDthQU9wRXFXLGFBQWE3a0YsRUFBRWpELEVBQUVtcEIsR0FBSSxxQkFBUmxtQixLQUFFakQsRUFBRW1wQixHQUFrQzthQUNuRDQrRCxjQUFjOWtGLEVBQUVqRCxFQUFFbXBCLEdBQUkscUJBQVJsbUIsS0FBRWpELEVBQUVtcEIsR0FBbUM7YUFDckQ2K0QsYUFBYS9rRixFQUFFakQsR0FBSSxxQkFBTmlELEtBQUVqRCxHQUErQjthQUM5Q2lvRixjQUFjaGxGLEVBQUVqRCxHQUFJLHFCQUFOaUQsS0FBRWpELEdBQWdDO2FBbUJoRGtvRixPQUFjcHBDLEtBQU1vbkMsT0FBbUJpQixLQUFLQyxLQUFLUSxLQUFLbG9GO01BQzlDLElBVEsreEUsSUFTTCxVQURNM3lCLEtBQU1vbkMsT0FBbUJpQixLQUFLQyxLQUFLUTtNQUN6QyxHQURZMUI7UUFQdEI7Y0FPbUQwQjtjQVBuRHRwRDtVQUNFOztrQkFNNEM4b0Q7a0JBTjVDeGpEO2NBQ0U7O3NCQUtxQ3VqRDtzQkFMckNwbEY7a0JBQ0U7a0NBSlMwdkUsSUFHWDF2RSxJQURGNmhDLElBREZ0RixJQUcyQixXQUk2QjUrQixFQUxwRHFDLElBREY2aEMsSUFERnRGO29CQUdNLFNBREZ2OEI7dUJBS3FDb2xGLFNBTHJDcGxGOzt5QkFERjZoQzttQkFNNEN3akQsU0FONUN4akQ7O3FCQURGdEY7ZUFPbURzcEQsU0FQbkR0cEQ7O2VBRGVtekM7TUFTTCxJQWhCVixLQWV5QzBWLGFBZnpDOzs7UUFDRTttQkFjNENDLGFBZDVDOzs7WUFDRTt1QkFhK0NRLGFBYi9DOzs7Z0JBQ0U7Z0NBSVNuVyxJQVBmajJFLEVBQ0VzVSxFQUNFMm1CLEVBQ3VCLFdBWTZCLzJCLEVBZnhEbEUsRUFDRXNVLEVBQ0UybUI7a0JBQ0UsU0FERkE7Ozt1QkFERjNtQjs7O21CQURGdFU7OzthQU9laTJFLEdBWTJDO2FBQ3hEMFcsV0FBa0JycEMsS0FBTW9uQyxPQUFrQm53RDtNQUM1QztZQUQ0Q0E7T0FDNUMsV0FBSW94RCxPQUM0QyxpQkFGSnB4RDtPQUc1QztjQURJcXhEOztVQUNvRCxpQkFBUixpQkFISnJ4RDtPQUluQyxhQUpXK29CLEtBQU1vbkMsT0FDdEJpQixLQUNBQyxLQUNBUTtPQUNLLElBSmlCMUI7T0FVMUIsS0FUSWlCO09BU0o7OztRQUNFO1VBQVUsSUFBTk8sSUFBTSxpQkFYZ0MzeEQsS0FVNUN2NkI7VUFDWSxHQUFOa3NGLG1CQVRGTjtXQVdBO1VBRlEsSUFFK0MsS0FYdkRBLGFBV3VEOztnQkFDekR0M0U7WUFDRTtjQUFVLElBQU5pMkUsSUFBTSxpQkFKUjJCLElBR0o1M0U7Y0FDWSxHQUFOaTJFLG1CQVpKNkI7ZUFjRTtjQUZRLElBRStDLEtBZHpEQSxhQWN5RDs7b0JBQ3pEbnhEO2dCQUNFOztvQkFmRnd3RDtvQkFNSnpyRixJQUxJOEg7b0JBU0Z3TSxJQVRFeE07b0JBYUFtekIsSUFiQW56QjtvQkFjOEMsaUJBSjFDeWlGLElBR0p0dkQ7a0JBQ0UsU0FERkE7OztjQUhVLFNBRFozbUI7OztVQUhVLFNBRFp0VTs7O01BYUEsT0FuQkl5ckYsRUFtQkY7YUFXRm1CLG1CQUFtQm5sRjtNQUNsQiw4QkFEa0JBOztlQUVoQiwyQ0FBeUM7YUFDNUNvbEYsbUJBQW1CcGxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUM1Q3FsRixtQkFBbUJybEY7TUFDbEIsOEJBRGtCQTs7ZUFFaEIsMkNBQXlDO2FBQzVDc2xGLG1CQUFtQnRsRjtNQUNsQiw4QkFEa0JBOztlQUVoQiwyQ0FBeUM7YUFLNUN1bEYsVUFBVXZsRixHQUFJLHVCQUFKQSxNQUFrQjthQUM1QndsRixVQUFVeGxGLEVBQUVra0YsTUFBTyx1QkFBVGxrRixLQUFFa2tGLE1BQXlCO2FBQ3JDdUIsVUFBVXpsRixFQUFFa2tGLEtBQUtDLE1BQU8sdUJBQWRua0YsS0FBRWtrRixLQUFLQyxNQUE4QjthQUMvQ3VCLFVBQVUxbEYsRUFBRWtrRixLQUFLQyxLQUFLUTtNQUFPLHVCQUFuQjNrRixLQUFFa2tGLEtBQUtDLEtBQUtRLE1BQW1DOzs7O09BclZ6RDlDO09BQ0FDO09BU0FTO09BQ0FDO09BVEFUO09BQ0FDO09BQ0FDO09BQ0FDO09BR0FHO09BRkFGO09BQ0FDO09BRUFFO09BR0FwL0I7T0FFQXUvQjtPQWtCQUM7T0FDQUM7VUF1QkVLLE9BVUFFLEtBV0FFOztRQXFCQUM7UUFlQUk7O1FBTEFEO1FBUkFGO1FBQ0FDO1FBWUFFOztRQVNBQztRQTRCQUk7O1FBZEFGO1FBSUFDO1FBZUFFOztRQWFBRTtRQXdDQU07O1FBeEJBSDtRQVFBQztRQUNBQztRQW9CQUU7O1FBc0JBRTtRQWdEQU87O1FBOUJBTDtRQVFBQztRQUNBQztRQUNBQztRQUNBQztRQXdCQUU7T0FrQ0ZDO09BR0FDO09BR0FDO09BR0FDOztPQU9BQztPQUNBQztPQUNBQztPQUNBQzs7YXhDOVdBQyxVQUFVQyxRQUFRM29GLEVBQUVSO01BQ2IsSUFBTHVFLEdBQUssV0FERzRrRixRQUFRM29GO01BQ1gscUJBRUksa0JBSFNSLEVBQ2xCdUUsR0FFYTtNQUZSLCtCQUN1QixxQkFENUJBLEdBQ29ELE9BQ3RDO2FBRWhCNmtGLGNBQWM1b0YsRUFBRVIsR0FDbEIsaUJBVkVxRSxXQVNjN0QsRUFBRVIsRUFDYzthQUU5QnFwRixlQUFlN29GLEVBQUVSLEdBQ25CLGlCQVpFb0UsWUFXZTVELEVBQUVSLEVBQ1M7YUFFMUJzcEYsY0FBY3huRSxNQUFNOWUsS0FBS3hDLEVBQUVSO01BQ25CLGdDZjlDYixPZWdDS21FLFdBYWMyZCxNQUFNOWUsWUFBS3hDLEVBQUVSLEVBQ2dCO1FBRTNDdXBGLFlBQ0F2c0QsV0FDQXdzRDthQUlBQyxhQUFXbGxGO01BQ2I7UUFBTSxJQUNKckIsRUFESSxtQkFET3FCOzs7Z0NBR2M7UUFEcEI7Z0JBQUxyQixFQUM2QjthQUU3QndtRixhQUFXbmxGO01BQ2I7UUFBTSxJQUNKakUsRUFESSxtQkFET2lFOzs7Z0NBR2M7UUFEcEI7Z0JBQUxqRSxFQUM2QjthQUU3QnFwRixhQUFXcGxGO01BQ2I7UUFBTSxJQUNKL0QsRUFESSxXQURPK0Q7OztnQ0FHYztRQURwQjtnQkFBTC9ELEVBQzZCO2FBSTdCb3BGLGVBQWFybEYsR0FBR1UsSUFBSSszQixJQUFJbjVCO01BQzFCO1FBQU0sYUFEU1UsR0FBR1UsSUFBSSszQixJQUFJbjVCLEtBRWxCOzs7Z0NBQ21CO21CQUFJO2FBRTdCZ21GLHNCQUFvQnRsRixHQUFHVjtNQUN6QjtRQUFNLElBQ0pyRCxFQURJLG9CQURnQitELEdBQUdWOzs7Z0NBR0U7UUFEcEI7Z0JBQUxyRCxFQUM2QjthQUk3QnNwRixVQUFVdmxGLEdBQUdVLElBQUlyQixJQUFJQztVQUNWWSxNQURNYixJQUNGYyxNQURNYjtNQUVyQjtpQkFEZWE7VUFHTCxJQUFKdkUsRUFBSSxNQUpBb0UsR0FBR1UsSUFDRlIsTUFBSUM7VUFHTCxTQUFKdkU7WUFJRjttQkFQV3VFLFFBR1R2RTthQUlGLE1BUE9zRSxRQUdMdEU7YUFIS3NFO2FBQUlDOztlQUFKRCxRQURNYixRQVdEO2FBY2hCbW1GLE9BQU85a0YsSUFBSXJCLElBQUl0RDtNQUNqQixJQUFJdUQsSUFBSixxQkFEU29CO01BQ1QsSUFEYXJCLE1BQUl0RCxVQUNidUQsSUFDbUIsT0FGZG9CO01BQ1QsSUFHTTZZLFdBSEZqYTs7V0FHRWlhLGNBSk9sYSxNQUFJdEQ7VUFNYixrQkFGRXdkO1FBSUo7bUJBSklBO1NBSUo7VUFBSWtzRTs7WUFST3BtRjs7Y0FlUDtTQUdKLDBCQVRJcW1GO1FBVUosS0FuQk9obEYsTUFrQkg4WSxVQWxCT25hO1FBbUJYLE9BREltYSxRQUdIO2FBRURtc0UsVUFBVTNsRjtNQUNaLElBQUk0bEY7TUFBSjtRQUdrQzs2QkFKdEI1bEY7U0FJUiwwQkFKUUE7U0FFUjJxRDs7Ozs7TUFESjtPQU9BLG9CQU5JQSwwQkFEQWk3QjtPQVFKO1FBRElDO09BT0osc0JBTklDO09BT1EsZ0JBaEJBOWxGLEdBZVJVLE1BTkFvbEY7TUFPUSxHQUFSQyxRQVBBRCxlQVNGLGtCQUhFcGxGLE1BQ0FxbEY7TUFHQztRQUNHLElBSUpwbkYsRUFKSSxtQkFwQklxQjs7O2dDQXVCTiw0QkFSRlU7UUFXRTtlQUFReS9DLEtBQUt6L0MsSUFBSXJCO1lBQUoybUYsVUFBSTlsRjtRQUNmO1VBQVU7d0JBREM4bEYsTUFBSTlsRixNQXpCbkIwbEY7V0EwQmMseUJBRENLLFNBQUkvbEY7V0FLUCxZQS9CSkYsR0EwQk9pbUYsTUFBSS9sRixNQUVYZ21GO1VBR0ksR0FBSnRxRixJQUhBc3FGLElBS0Ysa0JBUFNELFFBQUkvbEYsUUFLWHRFO1VBSk0sSUFRUixNQVRhc0UsUUFFWGdtRixRQUZPRixZQUFJOWxGO21CQVNPO01BRWQsSUFBTjhsRixNQUFNLE9BdEJadGxGLElBQ0FxbEY7TUFzQkUsZUFESUMsTUFyQk5ELE1BUUFwbkY7TUFjRSxZQURJcW5GLE1BckJORCxjQXdCRDs7OztPQTlJRDNuRjtPQUNBMEI7T0FDQUQ7T0FDQUQ7T0FPQWlsRjtPQUdBQztPQUdBQztPQUdBQztPQUNBdnNEO09BQ0F3c0Q7T0FDQS9oRjtPQUNBbkM7T0FFQW1rRjtPQUtBQztPQUtBQztPQUtBcmxGO09BRUFzbEY7T0FLQUM7T0F1REFLO09BMENBMWlGOzthQzFJQWtqRixZQUFVdkIsUUFBUTNvRixFQUFFUjtNQUNiLElBQUx5RCxHQUFLLFdBREcwbEYsUUFBUTNvRjtNQUNYLHFCQUVJLGtCQUhTUixFQUNsQnlELEdBRWE7TUFGUiwrQkFDdUIsbUJBRDVCQSxHQUNxRCxPQUN2QzthQUVoQmtuRixnQkFBY25xRixFQUFFUixHQUNsQixtQkFWRW9ELFNBU2M1QyxFQUFFUixFQUNlO2FBRS9CNHFGLGlCQUFlcHFGLEVBQUVSLEdBQ25CLG1CQVpFbUQsVUFXZTNDLEVBQUVSLEVBQ1U7YUFFM0I2cUYsZ0JBQWMvb0UsTUFBTTllLEtBQUt4QyxFQUFFUjtNQUNuQixrQ2hCL0NiLE9nQmlDSzhDLFNBYWNnZixNQUFNOWUsWUFBS3hDLEVBQUVSLEVBQ2lCOztLQUU1QzhxRjtLQUNBQztLQUNBQzs7O09BdEJBcG9GO09BQ0FDO09BQ0FPO09BQ0FEO09BQ0FMO09BT0E2bkY7T0FHQUM7T0FHQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQS9tRjtPQUNBQztPQUNBc0U7T0FDQW5GO09BQ0FrRjtPQUNBRDtPQUNBNUU7T0FDQUY7T0FDQUc7T0FDQUc7T0FDQW1FOzs7O1VoQjlETDs7Ozs7OztJdURBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O09BQ0FDO0tBL0dBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVlBQztLQUVBQztLQUtBQztLQUdBQztLQUlBQztLQUdBQztLQVNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQzs7O09BanJCTnRZOzs7Ozs7OztPQXNKQTRFO09BY0kyQjtPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVKRTtPQVFBWTtPQVVBVjtPQU9BSztPQVNJUztVQStKRW1EO09BaEtGcEQ7T0FHQUU7T0FJQUU7T0FJQUM7T0FJQUU7T0FJSUU7T0FoTkp2SDtPQUNBRTtPQUlBSztPQUhBSDtPQUNBQztPQUtBSTtPQUdBQztPQUVBQztPQU1BQztPQUtBSTtPQUZBRDtPQURBRDtPQURBRDtPQXlDQWdCO09BT0FFO09BR0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFHO09BREFGO09BZUFRO09BUkFIO09BSUFDO09BUkFIO09Bb0JBVztPQUpBSjtPQU9BSztPQUNBQztPQUVBQztPQW1CQUU7T0FoQkFEO09BdVlBc0o7T0FzQkFPO09BcUJBRTs7T0FtQkV3RjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVlBQztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUdBQztPQVNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7VUQxc0JQOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7bUJDQ1lDLEtBQU8sTUFBTUEsR0FBdkI7SURERjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTt5QkNDVUMsdUJBQXVCQSxrQkFBbUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lERHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VDQ0NBLFdEREQsNkJDQ0NDLEtEREQsSUNDQ0M7SURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNDQ0NDLHVCREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQ0NDQyxNREREOzs7Ozs7Ozs7O3lCQ0NDQSxNREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QVlBTTtPQXVGQU87O1VEaEtMOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7SUlBQTs7Ozs7Ozs7Ozs7Ozs7O01DNEMyQjt3QkFBS0M7aUJBQ2xCO21CQUVNOzs7O3VCQUhZQTt1Q0FNSztpQkFMdkIsOENBS3dCLEVBQUM7O01BakJaO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBOzBDQU1RO2lCQUwxQiw4Q0FLMkIsRUFBQztJQVp2Qzs7Ozs7OztVRDNCSDs7Ozs7OztJQ0FBOzs7O0lDa0JTOzs7VURsQlQiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIGlmKGdsb2JhbFRoaXMuVWludDhBcnJheSkge1xuICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShzLmwpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0gbmV3IEFycmF5KHMubCk7XG4gIH1cbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ZpbGxfYnl0ZXNcbnZhciBjYW1sX2ZpbGxfc3RyaW5nID0gY2FtbF9maWxsX2J5dGVzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50ICh0YWcpIHsgcmV0dXJuIHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBbMCwgdGFnLCBhcmddOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IFswLCB0YWddLmNvbmNhdChhcmdzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICBpZihmLmZ1bilcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgYXJncyk7XG4gIC8vRklYTUUsIGNhbiBoYXBwZW4gd2l0aCB0b28gbWFueSBhcmd1bWVudHNcbiAgaWYodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGY7XG4gIHZhciBuID0gZi5sZW5ndGggfCAwO1xuICBpZihuID09PSAwKSByZXR1cm4gZi5hcHBseShudWxsLGFyZ3MpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoIHwgMDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbiB8IDA7XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSksYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpe1xuICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZihuYW1lX29wdCAmJiBnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpXG4gICAgbiA9IGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYyhuYW1lX29wdCk7XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5GbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5JbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5GbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5yb3VuZCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZpbGUsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmlsZShmZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmlsZShmZCl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5cbk1sTm9kZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdmFyIGEgPSBjYW1sX2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpZighIChhIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5VaW50OEFycmF5KSlcbiAgICBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShhKTtcbiAgdmFyIGJ1ZmZlciA9IGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYSk7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdmFyIGEgPSBjYW1sX2FycmF5X29mX2J5dGVzKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBjYW1sX2J5dGVzX3NldChidWYsYnVmX29mZnNldCArIGksYnVmZmVyW2J1Zl9vZmZzZXQraV0pO1xuICB9XG4gIHJldHVybiAwXG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5yZWFkX29uZSA9IGZ1bmN0aW9uKG9mZnNldCl7XG4gIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheSgxKTtcbiAgdmFyIGJ1ZmZlciA9IGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYSk7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBidWZmZXIsIDAsIDEsIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gYnVmZmVyWzBdO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuTWxOb2RlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGaWxlO1xuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGaWxlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGaWxlKCl7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmICA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiB1bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcih1bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiB1bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cblxuLy9Qcm92aWRlczogd2luX3N0YXJ0dXAgY29uc3RcbmZ1bmN0aW9uIHdpbl9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogd2luX2NsZWFudXAgY29uc3RcbmZ1bmN0aW9uIHdpbl9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogd2luX2hhbmRsZV9mZCBjb25zdFxuZnVuY3Rpb24gd2luX2hhbmRsZV9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiB1bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHVuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfc3RhdFxudmFyIHVuaXhfc3RhdF82NCA9IHVuaXhfc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiB1bml4X2xzdGF0XG52YXIgdW5peF9sc3RhdF82NCA9IHVuaXhfbHN0YXQ7XG5cbi8vUHJvdmlkZXM6IHVuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuZnVuY3Rpb24gdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuZnVuY3Rpb24gdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKClcbn1cblxuLy9Qcm92aWRlczogdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHVuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYoZy5xdWl0KSBnLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGcucHJvY2VzcyAmJiBnLnByb2Nlc3MuZXhpdClcbiAgICBnLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBoYW5kbGVyKGVycixmYWxzZSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSB7IGF0X2V4aXQoMCkgfVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyArIFwiXFxuXCIpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbiA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICAvL25vZGVqcyBlbnZcbiAgaWYoZy5wcm9jZXNzXG4gICAgICYmIGcucHJvY2Vzcy5lbnZcbiAgICAgJiYgZy5wcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGcucHJvY2Vzcy5lbnZbbl0pO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmFyZ3ZcbiAgICAgJiYgZy5wcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gZy5wcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCJcbiAgICAgICYmIHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKVxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKSB7XG4gICAgdHJ5IHtyZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7IHJldHVybiAwfVxuICAgIGNhdGNoIChlKSB7cmV0dXJuIDF9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZihnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gV2ViYnJvd3NlcnNcbiAgICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDMyQXJyYXkoMSk7XG4gICAgICBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7XG4gICAgICByZXR1cm4gWzAsYVswXV07XG4gICAgfSBlbHNlIGlmKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzID09PSAnZnVuY3Rpb24nKXtcbiAgICAgIC8vIE5vZGVqc1xuICAgICAgdmFyIGJ1ZmYgPSBnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcyg0KTtcbiAgICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDMyQXJyYXkoYnVmZik7XG4gICAgICByZXR1cm4gWzAsYVswXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5vbikge1xuICAgIGcucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBnLnByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGcuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgdmFyIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICAgIHJldHVybiBmaWxlO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9zdHJpbmcoYnVmLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZ2V0KHRoaXMuZGF0YSwgb2Zmc2V0KTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcblxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoeCk7XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuIFRoZSArMiB0byBhcnJheSBsZW5ndGggc2VlbXMgdG8gd29yay5cbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+PTE2OyB9XG4gIGlmKGEgJiAweEZGMDApICAgICB7IGIgKz0gODsgYSA+Pj49IDg7IH1cbiAgaWYoYSAmIDB4RjApICAgICAgIHsgYiArPSA0OyBhID4+Pj0gNDsgfVxuICBpZihhICYgMTIpICAgICAgICAgeyBiICs9IDI7IGEgPj4+PSAyOyB9XG4gIGlmKGEgJiAyKSAgICAgICAgICB7IGIgKz0gMTsgYSA+Pj49IDE7IH1cbiAgaWYoYSAmIDEpICAgICAgICAgIHsgYiArPSAxOyB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF96ZXJvXG5mdW5jdGlvbiBpc19kaWdpdF96ZXJvKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gPT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9vZGRcbmZ1bmN0aW9uIGlzX2RpZ2l0X29kZChuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoeCB8IDApO1xuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5jcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMraV0gPj4+IDApO1xuICB9XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vL1Byb3ZpZGVzOiBkZWNyX25hdFxuZnVuY3Rpb24gZGVjcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+MCkgLSBib3Jyb3c7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAoYm9ycm93ID09IDEpID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSAtIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgLSBib3Jyb3c7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgKGJvcnJvdz09MSk/MDoxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gKG5hdDMuZGF0YVtvZnMzXSA+Pj4gMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeDEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhICYgMHgwMDAwRkZGRikgKyBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgPj4+IDE2KTtcbiAgICBjYXJyeSA9IE1hdGguZmxvb3IoeDIvNjU1MzYpO1xuICAgIHZhciB4MyA9IHgxICsgKHgyICUgNjU1MzYpICogNjU1MzY7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzLzQyOTQ5NjcyOTYpO1xuICB9XG5cbiAgaWYobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgbmF0X29mX2FycmF5KFtjYXJyeV0pLCAwLCAxLCAwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2Fycnk7XG4gIH1cbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1xuLy8gbGVuMSA+PSBsZW4yICsgbGVuMy5cbi8vUHJvdmlkZXM6IG11bHRfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X2RpZ2l0X25hdFxuZnVuY3Rpb24gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMywgbGVuMykge1xuICB2YXIgY2FycnkgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMzsgaSsrKSB7XG4gICAgY2FycnkgKz0gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMStpLCBsZW4xLWksIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMraSk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfbGVmdF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgIHZhciBhID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiPj4+MTYpO1xuICB2YXIgeSA9IE1hdGguZmxvb3IoeC9jKSAqIDY1NTM2O1xuICB2YXIgeiA9ICh4ICUgYykgKiA2NTUzNjtcbiAgdmFyIHcgPSB6ICsgKGIgJiAweDAwMDBGRkZGKTtcbiAgcmV0dXJuIFt5ICsgTWF0aC5mbG9vcih3L2MpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IChuYXQxLmRhdGFbb2ZzMStsZW4tMV0gPj4+MCk7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvcih2YXIgaSA9IGxlbi0yOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQyLmRhdGFbb2ZzMl0gPj4+IDApKTtcbiAgICBuYXRxLmRhdGFbb2ZzcStpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZihsZW4yID09IDEpIHtcbiAgICBkaXZfZGlnaXRfbmF0KG5hdDEsIG9mczErMSwgbmF0MSwgb2ZzMSwgbmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMik7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgcyA9IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQyLCBvZnMyK2xlbjItMSk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuXG4gIHZhciBkID0gKG5hdDIuZGF0YVtvZnMyK2xlbjItMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIrMSk7XG4gIGZvciAodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSBsZW4yOyBpLS0pIHtcbiAgICAvLyBEZWNlbnQgbG93ZXIgYm91bmQgb24gcXVvXG4gICAgdmFyIHF1byA9IGQgPT0gNDI5NDk2NzI5NiA/IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgOiBkaXZfaGVscGVyKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQxLmRhdGFbb2ZzMStpLTFdID4+PjApLCBkKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMisxKTtcbiAgICBtdWx0X2RpZ2l0X25hdChhLCAwLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbcXVvXSksIDApO1xuICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgYSwgMCwgbGVuMisxLCAxKTtcblxuICAgIHdoaWxlIChuYXQxLmRhdGFbb2ZzMStpXSAhPSAwIHx8IGNvbXBhcmVfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKSA+PSAwKSB7XG4gICAgICBxdW8gPSBxdW8gKyAxO1xuICAgICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCAxKTtcbiAgICB9XG5cbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfcmlnaHRfbmF0XG5mdW5jdGlvbiBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSBsZW4xLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMDtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhID4+PiBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhIDw8ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPiBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAxO1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZihhID4gYikgcmV0dXJuIDE7XG4gIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gIGZvcih2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApID4gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIDE7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPCAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG5cbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgdmFyIF9tYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHZhciBfYmxvY2tfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKCkge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKCk7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjICgpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICBmdW5jdGlvbiBnZXQzMihzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSA8PCAyNCkgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDIpIDw8IDgpIHxcbiAgICAgIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMyk7XG4gIH1cbiAgaWYgKGdldDMyKHMsIG9mcykgIT0gKDB4ODQ5NUE2QkV8MCkpXG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICByZXR1cm4gKGdldDMyKHMsIG9mcyArIDQpKTtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuV2Vha01hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZVxuLy9WZXJzaW9uOiA+PSA0LjA4XG52YXIgY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUgPSBmYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZVxuLy9WZXJzaW9uOiA8IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IHRydWVcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGdsb2JhbFRoaXMuY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDEyIC8qY3N0LkNPREVfQ1VTVE9NKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgfSBlbHNlIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIGRlbGV0ZSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0ZF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zdGRfb3V0cHV0KGNoYW5pZCxzKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBzdHIgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgc2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIHN0ciwgMCwgc2xlbik7XG4gIGNoYW4ub2Zmc2V0ICs9IHNsZW47XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsTWxGYWtlRmlsZVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyLCBqc19wcmludF9zdGRvdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoaWR4LG91dHB1dCxmaWxlLGZsYWdzKSB7XG4gIGlmKGNhbWxfZ2xvYmFsX2RhdGEuZmRzID09PSB1bmRlZmluZWQpIGNhbWxfZ2xvYmFsX2RhdGEuZmRzID0gbmV3IEFycmF5KCk7XG4gIGZsYWdzPWZsYWdzP2ZsYWdzOnt9O1xuICB2YXIgaW5mbyA9IHt9O1xuICBpbmZvLmZpbGUgPSBmaWxlO1xuICBpbmZvLm9mZnNldCA9IGZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjA7XG4gIGluZm8uZmxhZ3MgPSBmbGFncztcbiAgaW5mby5vdXRwdXQgPSBvdXRwdXQ7XG4gIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2lkeF0gPSBpbmZvO1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCB8fCBpZHggPiBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4KVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHggPSBpZHg7XG4gIHJldHVybiBpZHg7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICB2YXIgaWR4ID0gY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeD9jYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4OjA7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChpZHgrMSxjYW1sX3N0ZF9vdXRwdXQsZmlsZSxmKTtcbn1cbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMCxjYW1sX3N0ZF9vdXRwdXQsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkaW5cbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMSxqc19wcmludF9zdGRvdXQsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3Rkb3V0XG5jYW1sX3N5c19vcGVuX2ludGVybmFsKDIsanNfcHJpbnRfc3RkZXJyLCBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSkpOyAvL3N0ZGVyclxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKCkge1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfZ2xvYmFsX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcjpcIlwiXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3lzX29wZW4sY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZGF0YSA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgaWYoZGF0YS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgaWYoZmQgPT0gMCAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKXtcbiAgICB2YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgIHJlZmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhmcy5yZWFkRmlsZVN5bmMoMCwgJ3V0ZjgnKSl9O1xuICB9XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZGF0YS5maWxlLFxuICAgIG9mZnNldDpkYXRhLm9mZnNldCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG52YXIgd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsID0gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF07XG4gIGRhdGEuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGRhdGEuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2hhbi5maWxlLmNsb3NlKCk7XG4gIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbikge1xuICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgdmFyIHN0cl9sZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyKTtcbiAgaWYgKHN0cl9sZW4gPT0gMCkgY2hhbi5yZWZpbGwgPSBudWxsO1xuICBjaGFuLmZpbGUud3JpdGUoY2hhbi5maWxlLmxlbmd0aCgpLCBzdHIsIDAsIHN0cl9sZW4pO1xuICByZXR1cm4gc3RyX2xlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCA9PSBudWxsKSByZXR1cm47XG4gIGlmIChjaGFuLmZpbGUubGVuZ3RoKCkgIT0gY2hhbi5vZmZzZXQpIHJldHVybjtcbiAgY2FtbF9tbF9yZWZpbGxfaW5wdXQgKGNoYW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBzLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbDIgPSBjaGFuLmZpbGUubGVuZ3RoKCkgLSBjaGFuLm9mZnNldDtcbiAgaWYgKGwyID09IDAgJiYgY2hhbi5yZWZpbGwgIT0gbnVsbCkgbDIgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgaWYgKGwyIDwgbCkgbCA9IGwyO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgcywgaSwgbCk7XG4gIGNoYW4ub2Zmc2V0ICs9IGw7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG5cbiAgdmFyIGJ1ZiA9IGNhbWxfY3JlYXRlX2J5dGVzKDgpO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCw4KTtcblxuICAvLyBIZWFkZXIgaXMgMjAgYnl0ZXNcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGJ1ZiwgMCkgKyAyMDtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsYnVmLDAsbGVuKTtcblxuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGJ1Ziwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQoY2hhbmlkKTtcbiAgaWYgKGNoYW4ub2Zmc2V0ID49IGNoYW4uZmlsZS5sZW5ndGgoKSlcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmZpbGUucmVhZF9vbmUoY2hhbi5vZmZzZXQpO1xuICBjaGFuLm9mZnNldCsrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBmaWxlID0gY2hhbi5maWxlO1xuICB3aGlsZSAoKGNoYW4ub2Zmc2V0ICsgMykgPj0gZmlsZS5sZW5ndGgoKSkge1xuICAgIHZhciBsID0gY2FtbF9tbF9yZWZpbGxfaW5wdXQoY2hhbik7XG4gICAgaWYgKGwgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9XG4gIHZhciBvID0gY2hhbi5vZmZzZXQ7XG4gIHZhciByID0oZmlsZS5yZWFkX29uZShvICApIDw8IDI0KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysxKSA8PCAxNilcbiAgICAgIHwgIChmaWxlLnJlYWRfb25lKG8rMikgPDwgOClcbiAgICAgIHwgIChmaWxlLnJlYWRfb25lKG8rMykpO1xuICBjaGFuLm9mZnNldCs9NDtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGNoYW4ub2Zmc2V0ID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge3JldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7cmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCl9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLm9mZnNldDtcbiAgdmFyIGxlbiA9IGNoYW4uZmlsZS5sZW5ndGgoKTtcbiAgaWYocCA+PSBsZW4pIHsgcmV0dXJuIDA7fVxuICB3aGlsZSh0cnVlKSB7XG4gICAgaWYocCA+PSBsZW4pIHJldHVybiAtIChwIC0gY2hhbi5vZmZzZXQpO1xuICAgIGlmKGNoYW4uZmlsZS5yZWFkX29uZShwKSA9PSAxMCkgcmV0dXJuIHAgLSBjaGFuLm9mZnNldCArIDE7XG4gICAgcCsrO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlciA9PSBcIlwiKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5mZFxuICAgICAmJiBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXVxuICAgICAmJiBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQpIHtcbiAgICB2YXIgb3V0cHV0ID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0O1xuICAgIHN3aXRjaChvdXRwdXQubGVuZ3RoKXtcbiAgICBjYXNlIDI6IG91dHB1dChjaGFuaWQsY2hhbi5idWZmZXIpO2JyZWFrO1xuICAgIGRlZmF1bHQ6IG91dHB1dChjaGFuLmJ1ZmZlcilcbiAgICB9O1xuICB9XG4gIGNoYW4uYnVmZmVyID0gXCJcIjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVscywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIHZhciBieXRlcztcbiAgaWYob2Zmc2V0ID09IDAgJiYgY2FtbF9tbF9ieXRlc19sZW5ndGgoYnVmZmVyKSA9PSBsZW4pXG4gICAgYnl0ZXMgPSBidWZmZXI7XG4gIGVsc2Uge1xuICAgIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoYnVmZmVyLG9mZnNldCxieXRlcywwLGxlbik7XG4gIH1cbiAgdmFyIHN0cmluZyA9IGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKTtcbiAgdmFyIGpzc3RyaW5nID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdHJpbmcpO1xuICB2YXIgaWQgPSBqc3N0cmluZy5sYXN0SW5kZXhPZihcIlxcblwiKTtcbiAgaWYoaWQgPCAwKVxuICAgIGNoYW4uYnVmZmVyKz1qc3N0cmluZztcbiAgZWxzZSB7XG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nLnN1YnN0cigwLGlkKzEpO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgY2hhbi5idWZmZXIgKz0ganNzdHJpbmcuc3Vic3RyKGlkKzEpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0ID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXRcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGMpIHsgcmV0dXJuIDEgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoYyx2KSB7IHJldHVybiAwIH1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vSW1wb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzIzRlOTliMTViNzk1MTMzOGYxNjQ3MjgzNzdjOTA2Y2FhZTVhNzgyMDJcblxuLy9Qcm92aWRlczogYmlnSW50IGNvbnN0XG52YXIgYmlnSW50ID0gKGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIHZhciBCQVNFID0gMWU3LFxuICAgICAgICBMT0dfQkFTRSA9IDcsXG4gICAgICAgIE1BWF9JTlQgPSA5MDA3MTk5MjU0NzQwOTkyLFxuICAgICAgICBNQVhfSU5UX0FSUiA9IHNtYWxsVG9BcnJheShNQVhfSU5UKSxcbiAgICAgICAgREVGQVVMVF9BTFBIQUJFVCA9IFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCI7XG5cbiAgICB2YXIgQmlnSW50ID0gam9vX2dsb2JhbF9vYmplY3QuQmlnSW50O1xuXG4gICAgdmFyIHN1cHBvcnRzTmF0aXZlQmlnSW50ID0gdHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiO1xuXG4gICAgZnVuY3Rpb24gSW50ZWdlcih2LCByYWRpeCwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKHR5cGVvZiByYWRpeCAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuICtyYWRpeCA9PT0gMTAgJiYgIWFscGhhYmV0ID8gcGFyc2VWYWx1ZSh2KSA6IHBhcnNlQmFzZSh2LCByYWRpeCwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpO1xuICAgICAgICByZXR1cm4gcGFyc2VWYWx1ZSh2KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBCaWdJbnRlZ2VyKHZhbHVlLCBzaWduKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zaWduID0gc2lnbjtcbiAgICAgICAgdGhpcy5pc1NtYWxsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gU21hbGxJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zaWduID0gdmFsdWUgPCAwO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gTmF0aXZlQmlnSW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcblxuICAgIGZ1bmN0aW9uIGlzUHJlY2lzZShuKSB7XG4gICAgICAgIHJldHVybiAtTUFYX0lOVCA8IG4gJiYgbiA8IE1BWF9JTlQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc21hbGxUb0FycmF5KG4pIHsgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgZG9lc24ndCByZWZlcmVuY2UgQkFTRSwgbmVlZCB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpZiBCQVNFIGNoYW5nZXNcbiAgICAgICAgaWYgKG4gPCAxZTcpXG4gICAgICAgICAgICByZXR1cm4gW25dO1xuICAgICAgICBpZiAobiA8IDFlMTQpXG4gICAgICAgICAgICByZXR1cm4gW24gJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlNyldO1xuICAgICAgICByZXR1cm4gW24gJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlNykgJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlMTQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcnJheVRvU21hbGwoYXJyKSB7IC8vIElmIEJBU0UgY2hhbmdlcyB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGNoYW5nZVxuICAgICAgICB0cmltKGFycik7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgNCAmJiBjb21wYXJlQWJzKGFyciwgTUFYX0lOVF9BUlIpIDwgMCkge1xuICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIGFyclswXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBhcnJbMF0gKyBhcnJbMV0gKiBCQVNFO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBhcnJbMF0gKyAoYXJyWzFdICsgYXJyWzJdICogQkFTRSkgKiBCQVNFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpbSh2KSB7XG4gICAgICAgIHZhciBpID0gdi5sZW5ndGg7XG4gICAgICAgIHdoaWxlICh2Wy0taV0gPT09IDApO1xuICAgICAgICB2Lmxlbmd0aCA9IGkgKyAxO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFycmF5KGxlbmd0aCkgeyAvLyBmdW5jdGlvbiBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSBZYWZmbGUncyBsaWJyYXJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9ZYWZmbGUvQmlnSW50ZWdlclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICB2YXIgaSA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICB4W2ldID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cnVuY2F0ZShuKSB7XG4gICAgICAgIGlmIChuID4gMCkgcmV0dXJuIE1hdGguZmxvb3Iobik7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwobik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkKGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhLmxlbmd0aCA+PSBiLmxlbmd0aFxuICAgICAgICB2YXIgbF9hID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBsX2IgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobF9hKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gMCxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgc3VtLCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF9iOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBiW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA+PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2ldID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpIDwgbF9hKSB7XG4gICAgICAgICAgICBzdW0gPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA9PT0gYmFzZSA/IDEgOiAwO1xuICAgICAgICAgICAgcltpKytdID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXJyeSA+IDApIHIucHVzaChjYXJyeSk7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEFueShhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+PSBiLmxlbmd0aCkgcmV0dXJuIGFkZChhLCBiKTtcbiAgICAgICAgcmV0dXJuIGFkZChiLCBhKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTbWFsbChhLCBjYXJyeSkgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGNhcnJ5IGlzIG51bWJlciB3aXRoIDAgPD0gY2FycnkgPCBNQVhfSU5UXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gLSBiYXNlICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3Ioc3VtIC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgY2FycnkgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKGEsIE1hdGguYWJzKGIpKSwgdGhpcy5zaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkQW55KGEsIGIpLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZDtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChpc1ByZWNpc2UoYSArIGIpKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhICsgYik7XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KE1hdGguYWJzKGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYiwgTWF0aC5hYnMoYSkpLCBhIDwgMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnBsdXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFkZDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBsdXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFkZDtcblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhID49IGJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGFfbCksXG4gICAgICAgICAgICBib3Jyb3cgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYl9sOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldIC0gYm9ycm93IC0gYltpXTtcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkge1xuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgKz0gYmFzZTtcbiAgICAgICAgICAgICAgICBib3Jyb3cgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBiX2w7IGkgPCBhX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3c7XG4gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApIGRpZmZlcmVuY2UgKz0gYmFzZTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJbaSsrXSA9IGRpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICByW2ldID0gYVtpXTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdEFueShhLCBiLCBzaWduKSB7XG4gICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgaWYgKGNvbXBhcmVBYnMoYSwgYikgPj0gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChhLCBiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3VidHJhY3QoYiwgYSk7XG4gICAgICAgICAgICBzaWduID0gIXNpZ247XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSBhcnJheVRvU21hbGwodmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAoc2lnbikgdmFsdWUgPSAtdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHZhbHVlLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdFNtYWxsKGEsIGIsIHNpZ24pIHsgLy8gYXNzdW1lcyBhIGlzIGFycmF5LCBiIGlzIG51bWJlciB3aXRoIDAgPD0gYiA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBjYXJyeSA9IC1iLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2UgLyBiYXNlKTtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgJT0gYmFzZTtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlIDwgMCA/IGRpZmZlcmVuY2UgKyBiYXNlIDogZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICByID0gYXJyYXlUb1NtYWxsKHIpO1xuICAgICAgICBpZiAodHlwZW9mIHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSByID0gLXI7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihyKTtcbiAgICAgICAgfSByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpXG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbChhLCBNYXRoLmFicyhiKSwgdGhpcy5zaWduKTtcbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0QW55KGEsIGIsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYSAtIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGIsIE1hdGguYWJzKGEpLCBhID49IDApO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1pbnVzID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHRoaXMudmFsdWUsICF0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzaWduID0gdGhpcy5zaWduO1xuICAgICAgICB2YXIgc21hbGwgPSBuZXcgU21hbGxJbnRlZ2VyKC10aGlzLnZhbHVlKTtcbiAgICAgICAgc21hbGwuc2lnbiA9ICFzaWduO1xuICAgICAgICByZXR1cm4gc21hbGw7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoLXRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHRoaXMudmFsdWUsIGZhbHNlKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihNYXRoLmFicyh0aGlzLnZhbHVlKSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSA+PSAwID8gdGhpcy52YWx1ZSA6IC10aGlzLnZhbHVlKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5TG9uZyhhLCBiKSB7XG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgbCA9IGFfbCArIGJfbCxcbiAgICAgICAgICAgIHIgPSBjcmVhdGVBcnJheShsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYl9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYV9sOyArK2kpIHtcbiAgICAgICAgICAgIGFfaSA9IGFbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJfbDsgKytqKSB7XG4gICAgICAgICAgICAgICAgYl9qID0gYltqXTtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gYV9pICogYl9qICsgcltpICsgal07XG4gICAgICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcbiAgICAgICAgICAgICAgICByW2kgKyBqXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICAgICAgcltpICsgaiArIDFdICs9IGNhcnJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGwoYSwgYikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggfGJ8IDwgQkFTRVxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgcHJvZHVjdCwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgcHJvZHVjdCA9IGFbaV0gKiBiICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgcltpXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGNhcnJ5ID4gMCkge1xuICAgICAgICAgICAgcltpKytdID0gY2FycnkgJSBiYXNlO1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGNhcnJ5IC8gYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hpZnRMZWZ0KHgsIG4pIHtcbiAgICAgICAgdmFyIHIgPSBbXTtcbiAgICAgICAgd2hpbGUgKG4tLSA+IDApIHIucHVzaCgwKTtcbiAgICAgICAgcmV0dXJuIHIuY29uY2F0KHgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5S2FyYXRzdWJhKHgsIHkpIHtcbiAgICAgICAgdmFyIG4gPSBNYXRoLm1heCh4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgICAgIGlmIChuIDw9IDMwKSByZXR1cm4gbXVsdGlwbHlMb25nKHgsIHkpO1xuICAgICAgICBuID0gTWF0aC5jZWlsKG4gLyAyKTtcblxuICAgICAgICB2YXIgYiA9IHguc2xpY2UobiksXG4gICAgICAgICAgICBhID0geC5zbGljZSgwLCBuKSxcbiAgICAgICAgICAgIGQgPSB5LnNsaWNlKG4pLFxuICAgICAgICAgICAgYyA9IHkuc2xpY2UoMCwgbik7XG5cbiAgICAgICAgdmFyIGFjID0gbXVsdGlwbHlLYXJhdHN1YmEoYSwgYyksXG4gICAgICAgICAgICBiZCA9IG11bHRpcGx5S2FyYXRzdWJhKGIsIGQpLFxuICAgICAgICAgICAgYWJjZCA9IG11bHRpcGx5S2FyYXRzdWJhKGFkZEFueShhLCBiKSwgYWRkQW55KGMsIGQpKTtcblxuICAgICAgICB2YXIgcHJvZHVjdCA9IGFkZEFueShhZGRBbnkoYWMsIHNoaWZ0TGVmdChzdWJ0cmFjdChzdWJ0cmFjdChhYmNkLCBhYyksIGJkKSwgbikpLCBzaGlmdExlZnQoYmQsIDIgKiBuKSk7XG4gICAgICAgIHRyaW0ocHJvZHVjdCk7XG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xuICAgIH1cblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIGEgc3VyZmFjZSBmaXQgb2YgYSBncmFwaCBwbG90dGluZyB0aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZVxuICAgIC8vIGJldHdlZW4gbG9uZyBtdWx0aXBsaWNhdGlvbiBhbmQga2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHZlcnN1cyB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIGFycmF5cy5cbiAgICBmdW5jdGlvbiB1c2VLYXJhdHN1YmEobDEsIGwyKSB7XG4gICAgICAgIHJldHVybiAtMC4wMTIgKiBsMSAtIDAuMDEyICogbDIgKyAwLjAwMDAxNSAqIGwxICogbDIgPiAwO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlLFxuICAgICAgICAgICAgc2lnbiA9IHRoaXMuc2lnbiAhPT0gbi5zaWduLFxuICAgICAgICAgICAgYWJzO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoYiA9PT0gMSkgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICBpZiAoYiA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICAgICAgYWJzID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseVNtYWxsKGEsIGFicyksIHNpZ24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShhYnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VLYXJhdHN1YmEoYS5sZW5ndGgsIGIubGVuZ3RoKSkgLy8gS2FyYXRzdWJhIGlzIG9ubHkgZmFzdGVyIGZvciBjZXJ0YWluIGFycmF5IHNpemVzXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlLYXJhdHN1YmEoYSwgYiksIHNpZ24pO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlMb25nKGEsIGIpLCBzaWduKTtcbiAgICB9O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseTtcblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGxBbmRBcnJheShhLCBiLCBzaWduKSB7IC8vIGEgPj0gMFxuICAgICAgICBpZiAoYSA8IEJBU0UpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseVNtYWxsKGIsIGEpLCBzaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlMb25nKGIsIHNtYWxsVG9BcnJheShhKSksIHNpZ24pO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKGEudmFsdWUgKiB0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYS52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdWx0aXBseVNtYWxsQW5kQXJyYXkoTWF0aC5hYnMoYS52YWx1ZSksIHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSksIHRoaXMuc2lnbiAhPT0gYS5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IC0xKSByZXR1cm4gdGhpcy5uZWdhdGUoKTtcbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgdGhpcy52YWx1ZSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpLl9tdWx0aXBseUJ5U21hbGwodGhpcyk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRpbWVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICogcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudGltZXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gc3F1YXJlKGEpIHtcbiAgICAgICAgLy9jb25zb2xlLmFzc2VydCgyICogQkFTRSAqIEJBU0UgPCBNQVhfSU5UKTtcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBjcmVhdGVBcnJheShsICsgbCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHByb2R1Y3QsIGNhcnJ5LCBpLCBhX2ksIGFfajtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGNhcnJ5ID0gMCAtIGFfaSAqIGFfaTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBpOyBqIDwgbDsgaisrKSB7XG4gICAgICAgICAgICAgICAgYV9qID0gYVtqXTtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gMiAqIChhX2kgKiBhX2opICsgcltpICsgal0gKyBjYXJyeTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaSArIGxdID0gY2Fycnk7XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHRoaXMudmFsdWUpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlICogdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSkpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHNxdWFyZShzbWFsbFRvQXJyYXkoTWF0aC5hYnModGhpcy52YWx1ZSkpKSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2QxKGEsIGIpIHsgLy8gTGVmdCBvdmVyIGZyb20gcHJldmlvdXMgdmVyc2lvbi4gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMiBvbiBzbWFsbGVyIGlucHV0IHNpemVzLlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlQXJyYXkoYi5sZW5ndGgpLFxuICAgICAgICAgICAgZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0ID0gYltiX2wgLSAxXSxcbiAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb25cbiAgICAgICAgICAgIGxhbWJkYSA9IE1hdGguY2VpbChiYXNlIC8gKDIgKiBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpKSxcbiAgICAgICAgICAgIHJlbWFpbmRlciA9IG11bHRpcGx5U21hbGwoYSwgbGFtYmRhKSxcbiAgICAgICAgICAgIGRpdmlzb3IgPSBtdWx0aXBseVNtYWxsKGIsIGxhbWJkYSksXG4gICAgICAgICAgICBxdW90aWVudERpZ2l0LCBzaGlmdCwgY2FycnksIGJvcnJvdywgaSwgbCwgcTtcbiAgICAgICAgaWYgKHJlbWFpbmRlci5sZW5ndGggPD0gYV9sKSByZW1haW5kZXIucHVzaCgwKTtcbiAgICAgICAgZGl2aXNvci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBkaXZpc29yW2JfbCAtIDFdO1xuICAgICAgICBmb3IgKHNoaWZ0ID0gYV9sIC0gYl9sOyBzaGlmdCA+PSAwOyBzaGlmdC0tKSB7XG4gICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gYmFzZSAtIDE7XG4gICAgICAgICAgICBpZiAocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAhPT0gZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCA9IE1hdGguZmxvb3IoKHJlbWFpbmRlcltzaGlmdCArIGJfbF0gKiBiYXNlICsgcmVtYWluZGVyW3NoaWZ0ICsgYl9sIC0gMV0pIC8gZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHF1b3RpZW50RGlnaXQgPD0gYmFzZSAtIDFcbiAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICBsID0gZGl2aXNvci5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FycnkgKz0gcXVvdGllbnREaWdpdCAqIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgcSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gcmVtYWluZGVyW3NoaWZ0ICsgaV0gLSAoY2FycnkgLSBxICogYmFzZSk7XG4gICAgICAgICAgICAgICAgY2FycnkgPSBxO1xuICAgICAgICAgICAgICAgIGlmIChib3Jyb3cgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gYm9ycm93ICsgYmFzZTtcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3c7XG4gICAgICAgICAgICAgICAgICAgIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGJvcnJvdyAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgLT0gMTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjYXJyeSArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIGJhc2UgKyBkaXZpc29yW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FycnkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGNhcnJ5ICsgYmFzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2Fycnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYm9ycm93ICs9IGNhcnJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W3NoaWZ0XSA9IHF1b3RpZW50RGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVub3JtYWxpemF0aW9uXG4gICAgICAgIHJlbWFpbmRlciA9IGRpdk1vZFNtYWxsKHJlbWFpbmRlciwgbGFtYmRhKVswXTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHJlbWFpbmRlcildO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDIoYSwgYikgeyAvLyBJbXBsZW1lbnRhdGlvbiBpZGVhIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFNpbGVudCBNYXR0J3MgbGlicmFyeSBodHRwOi8vc2lsZW50bWF0dC5jb20vYmlnaW50ZWdlci9cbiAgICAgICAgLy8gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMSBvbiBsYXJnZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgICBwYXJ0ID0gW10sXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGd1ZXNzLCB4bGVuLCBoaWdoeCwgaGlnaHksIGNoZWNrO1xuICAgICAgICB3aGlsZSAoYV9sKSB7XG4gICAgICAgICAgICBwYXJ0LnVuc2hpZnQoYVstLWFfbF0pO1xuICAgICAgICAgICAgdHJpbShwYXJ0KTtcbiAgICAgICAgICAgIGlmIChjb21wYXJlQWJzKHBhcnQsIGIpIDwgMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKDApO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGxlbiA9IHBhcnQubGVuZ3RoO1xuICAgICAgICAgICAgaGlnaHggPSBwYXJ0W3hsZW4gLSAxXSAqIGJhc2UgKyBwYXJ0W3hsZW4gLSAyXTtcbiAgICAgICAgICAgIGhpZ2h5ID0gYltiX2wgLSAxXSAqIGJhc2UgKyBiW2JfbCAtIDJdO1xuICAgICAgICAgICAgaWYgKHhsZW4gPiBiX2wpIHtcbiAgICAgICAgICAgICAgICBoaWdoeCA9IChoaWdoeCArIDEpICogYmFzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGd1ZXNzID0gTWF0aC5jZWlsKGhpZ2h4IC8gaGlnaHkpO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGNoZWNrID0gbXVsdGlwbHlTbWFsbChiLCBndWVzcyk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMoY2hlY2ssIHBhcnQpIDw9IDApIGJyZWFrO1xuICAgICAgICAgICAgICAgIGd1ZXNzLS07XG4gICAgICAgICAgICB9IHdoaWxlIChndWVzcyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChndWVzcyk7XG4gICAgICAgICAgICBwYXJ0ID0gc3VidHJhY3QocGFydCwgY2hlY2spO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5yZXZlcnNlKCk7XG4gICAgICAgIHJldHVybiBbYXJyYXlUb1NtYWxsKHJlc3VsdCksIGFycmF5VG9TbWFsbChwYXJ0KV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kU21hbGwodmFsdWUsIGxhbWJkYSkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoLFxuICAgICAgICAgICAgcXVvdGllbnQgPSBjcmVhdGVBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBxLCByZW1haW5kZXIsIGRpdmlzb3I7XG4gICAgICAgIHJlbWFpbmRlciA9IDA7XG4gICAgICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICBkaXZpc29yID0gcmVtYWluZGVyICogYmFzZSArIHZhbHVlW2ldO1xuICAgICAgICAgICAgcSA9IHRydW5jYXRlKGRpdmlzb3IgLyBsYW1iZGEpO1xuICAgICAgICAgICAgcmVtYWluZGVyID0gZGl2aXNvciAtIHEgKiBsYW1iZGE7XG4gICAgICAgICAgICBxdW90aWVudFtpXSA9IHEgfCAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIHJlbWFpbmRlciB8IDBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZEFueShzZWxmLCB2KSB7XG4gICAgICAgIHZhciB2YWx1ZSwgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgLyBuLnZhbHVlKSwgbmV3IE5hdGl2ZUJpZ0ludChzZWxmLnZhbHVlICUgbi52YWx1ZSldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gc2VsZi52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIHZhciBxdW90aWVudDtcbiAgICAgICAgaWYgKGIgPT09IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkaXZpZGUgYnkgemVyb1wiKTtcbiAgICAgICAgaWYgKHNlbGYuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZShhIC8gYikpLCBuZXcgU21hbGxJbnRlZ2VyKGEgJSBiKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW0ludGVnZXJbMF0sIHNlbGZdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gW3NlbGYsIEludGVnZXJbMF1dO1xuICAgICAgICAgICAgaWYgKGIgPT0gLTEpIHJldHVybiBbc2VsZi5uZWdhdGUoKSwgSW50ZWdlclswXV07XG4gICAgICAgICAgICB2YXIgYWJzID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kU21hbGwoYSwgYWJzKTtcbiAgICAgICAgICAgICAgICBxdW90aWVudCA9IGFycmF5VG9TbWFsbCh2YWx1ZVswXSk7XG4gICAgICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHZhbHVlWzFdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24pIHJlbWFpbmRlciA9IC1yZW1haW5kZXI7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBxdW90aWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5zaWduICE9PSBuLnNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBTbWFsbEludGVnZXIocXVvdGllbnQpLCBuZXcgU21hbGxJbnRlZ2VyKHJlbWFpbmRlcildO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBCaWdJbnRlZ2VyKHF1b3RpZW50LCBzZWxmLnNpZ24gIT09IG4uc2lnbiksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlQWJzKGEsIGIpO1xuICAgICAgICBpZiAoY29tcGFyaXNvbiA9PT0gLTEpIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAwKSByZXR1cm4gW0ludGVnZXJbc2VsZi5zaWduID09PSBuLnNpZ24gPyAxIDogLTFdLCBJbnRlZ2VyWzBdXTtcblxuICAgICAgICAvLyBkaXZNb2QxIGlzIGZhc3RlciBvbiBzbWFsbGVyIGlucHV0IHNpemVzXG4gICAgICAgIGlmIChhLmxlbmd0aCArIGIubGVuZ3RoIDw9IDIwMClcbiAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kMShhLCBiKTtcbiAgICAgICAgZWxzZSB2YWx1ZSA9IGRpdk1vZDIoYSwgYik7XG5cbiAgICAgICAgcXVvdGllbnQgPSB2YWx1ZVswXTtcbiAgICAgICAgdmFyIHFTaWduID0gc2VsZi5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBtb2QgPSB2YWx1ZVsxXSxcbiAgICAgICAgICAgIG1TaWduID0gc2VsZi5zaWduO1xuICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAocVNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xuICAgICAgICAgICAgcXVvdGllbnQgPSBuZXcgU21hbGxJbnRlZ2VyKHF1b3RpZW50KTtcbiAgICAgICAgfSBlbHNlIHF1b3RpZW50ID0gbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHFTaWduKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2QgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChtU2lnbikgbW9kID0gLW1vZDtcbiAgICAgICAgICAgIG1vZCA9IG5ldyBTbWFsbEludGVnZXIobW9kKTtcbiAgICAgICAgfSBlbHNlIG1vZCA9IG5ldyBCaWdJbnRlZ2VyKG1vZCwgbVNpZ24pO1xuICAgICAgICByZXR1cm4gW3F1b3RpZW50LCBtb2RdO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBkaXZNb2RBbnkodGhpcywgdik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBxdW90aWVudDogcmVzdWx0WzBdLFxuICAgICAgICAgICAgcmVtYWluZGVyOiByZXN1bHRbMV1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2bW9kID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZtb2QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZtb2Q7XG5cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBkaXZNb2RBbnkodGhpcywgdilbMF07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm92ZXIgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLyBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUub3ZlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3ZlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBkaXZNb2RBbnkodGhpcywgdilbMV07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucmVtYWluZGVyID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAlIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICB2YWx1ZSwgeCwgeTtcbiAgICAgICAgaWYgKGIgPT09IDApIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSAxKSByZXR1cm4gSW50ZWdlclsxXTtcbiAgICAgICAgaWYgKGEgPT09IC0xKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFuLmlzU21hbGwpIHRocm93IG5ldyBFcnJvcihcIlRoZSBleHBvbmVudCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGlzIHRvbyBsYXJnZS5cIik7XG4gICAgICAgIGlmICh0aGlzLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChpc1ByZWNpc2UodmFsdWUgPSBNYXRoLnBvdyhhLCBiKSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodHJ1bmNhdGUodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICB4ID0gdGhpcztcbiAgICAgICAgeSA9IEludGVnZXJbMV07XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAoYiAmIDEgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcbiAgICAgICAgICAgICAgICAtLWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IDI7XG4gICAgICAgICAgICB4ID0geC5zcXVhcmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucG93ID0gQmlnSW50ZWdlci5wcm90b3R5cGUucG93O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIHZhciBfMCA9IEJpZ0ludCgwKSwgXzEgPSBCaWdJbnQoMSksIF8yID0gQmlnSW50KDIpO1xuICAgICAgICBpZiAoYiA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAoYSA9PT0gXzEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gQmlnSW50KC0xKSkgcmV0dXJuIG4uaXNFdmVuKCkgPyBJbnRlZ2VyWzFdIDogSW50ZWdlclstMV07XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSkgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoXzApO1xuICAgICAgICB2YXIgeCA9IHRoaXM7XG4gICAgICAgIHZhciB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmICgoYiAmIF8xKSA9PT0gXzEpIHtcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcbiAgICAgICAgICAgICAgICAtLWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYiA9PT0gXzApIGJyZWFrO1xuICAgICAgICAgICAgYiAvPSBfMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IGZ1bmN0aW9uIChleHAsIG1vZCkge1xuICAgICAgICBleHAgPSBwYXJzZVZhbHVlKGV4cCk7XG4gICAgICAgIG1vZCA9IHBhcnNlVmFsdWUobW9kKTtcbiAgICAgICAgaWYgKG1vZC5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHRha2UgbW9kUG93IHdpdGggbW9kdWx1cyAwXCIpO1xuICAgICAgICB2YXIgciA9IEludGVnZXJbMV0sXG4gICAgICAgICAgICBiYXNlID0gdGhpcy5tb2QobW9kKTtcbiAgICAgICAgaWYgKGV4cC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgIGV4cCA9IGV4cC5tdWx0aXBseShJbnRlZ2VyWy0xXSk7XG4gICAgICAgICAgICBiYXNlID0gYmFzZS5tb2RJbnYobW9kKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZXhwLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgaWYgKGJhc2UuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICAgICAgaWYgKGV4cC5pc09kZCgpKSByID0gci5tdWx0aXBseShiYXNlKS5tb2QobW9kKTtcbiAgICAgICAgICAgIGV4cCA9IGV4cC5kaXZpZGUoMik7XG4gICAgICAgICAgICBiYXNlID0gYmFzZS5zcXVhcmUoKS5tb2QobW9kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kUG93ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3c7XG5cbiAgICBmdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gYVtpXSA+IGJbaV0gPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHJldHVybiAxO1xuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSBNYXRoLmFicyh0aGlzLnZhbHVlKSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBiID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgYSA9IGEgPj0gMCA/IGEgOiAtYTtcbiAgICAgICAgYiA9IGIgPj0gMCA/IGIgOiAtYjtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGFib3V0IGNvbXBhcmlzb24gd2l0aCBJbmZpbml0eTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9pc3N1ZXMvNjFcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBuLnNpZ24gPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2lnbiA/IC0xIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKSAqICh0aGlzLnNpZ24gPyAtMSA6IDEpO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIGEgPCAwID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhIDwgMCA/IDEgOiAtMTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVUbyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5lcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgIT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5lcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90RXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5lcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3QgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmd0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA8IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmx0ID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmx0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3NlcjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPj0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ2VxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDw9IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdICYgMSkgPT09IDA7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDApO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5zaWduO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Bvc2l0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA+IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaWduO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA8IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy52YWx1ZSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzKCkudmFsdWUgPT09IEJpZ0ludCgxKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gQmlnSW50KDApO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uY29tcGFyZUFicygyKSA9PT0gMCkgcmV0dXJuIHRoaXMuaXNFdmVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZChuKS5pc1plcm8oKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnk7XG5cbiAgICBmdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgICAgICB2YXIgbiA9IHYuYWJzKCk7XG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChuLmVxdWFscygyKSB8fCBuLmVxdWFscygzKSB8fCBuLmVxdWFscyg1KSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChuLmlzRXZlbigpIHx8IG4uaXNEaXZpc2libGVCeSgzKSB8fCBuLmlzRGl2aXNpYmxlQnkoNSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4ubGVzc2VyKDQ5KSkgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vIHdlIGRvbid0IGtub3cgaWYgaXQncyBwcmltZTogbGV0IHRoZSBvdGhlciBmdW5jdGlvbnMgZmlndXJlIGl0IG91dFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgICAgIHZhciBuUHJldiA9IG4ucHJldigpLFxuICAgICAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICAgICAgciA9IDAsXG4gICAgICAgICAgICBkLCB0LCBpLCB4O1xuICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkgYiA9IGIuZGl2aWRlKDIpLCByKys7XG4gICAgICAgIG5leHQ6IGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobi5sZXNzZXIoYVtpXSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgeCA9IGJpZ0ludChhW2ldKS5tb2RQb3coYiwgbik7XG4gICAgICAgICAgICBpZiAoeC5pc1VuaXQoKSB8fCB4LmVxdWFscyhuUHJldikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChkID0gciAtIDE7IGQgIT0gMDsgZC0tKSB7XG4gICAgICAgICAgICAgICAgeCA9IHguc3F1YXJlKCkubW9kKG4pO1xuICAgICAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHguZXF1YWxzKG5QcmV2KSkgY29udGludWUgbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgXCJzdHJpY3RcIiB0byB0cnVlIHRvIGZvcmNlIEdSSC1zdXBwb3J0ZWQgbG93ZXIgYm91bmQgb2YgMipsb2coTileMlxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWUgPSBmdW5jdGlvbiAoc3RyaWN0KSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgYml0cyA9IG4uYml0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBbMiwgMywgNSwgNywgMTEsIDEzLCAxNywgMTksIDIzLCAyOSwgMzEsIDM3XSk7XG4gICAgICAgIHZhciBsb2dOID0gTWF0aC5sb2coMikgKiBiaXRzLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwoKHN0cmljdCA9PT0gdHJ1ZSkgPyAoMiAqIE1hdGgucG93KGxvZ04sIDIpKSA6IGxvZ04pO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50KGkgKyAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBhKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucykge1xuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcbiAgICAgICAgaWYgKGlzUHJpbWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzUHJpbWU7XG4gICAgICAgIHZhciBuID0gdGhpcy5hYnMoKTtcbiAgICAgICAgdmFyIHQgPSBpdGVyYXRpb25zID09PSB1bmRlZmluZWQgPyA1IDogaXRlcmF0aW9ucztcbiAgICAgICAgZm9yICh2YXIgYSA9IFtdLCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludC5yYW5kQmV0d2VlbigyLCBuLm1pbnVzKDIpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBhKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnYgPSBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgdCA9IGJpZ0ludC56ZXJvLCBuZXdUID0gYmlnSW50Lm9uZSwgciA9IHBhcnNlVmFsdWUobiksIG5ld1IgPSB0aGlzLmFicygpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgICAgIHdoaWxlICghbmV3Ui5pc1plcm8oKSkge1xuICAgICAgICAgICAgcSA9IHIuZGl2aWRlKG5ld1IpO1xuICAgICAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICAgICAgbGFzdFIgPSByO1xuICAgICAgICAgICAgdCA9IG5ld1Q7XG4gICAgICAgICAgICByID0gbmV3UjtcbiAgICAgICAgICAgIG5ld1QgPSBsYXN0VC5zdWJ0cmFjdChxLm11bHRpcGx5KG5ld1QpKTtcbiAgICAgICAgICAgIG5ld1IgPSBsYXN0Ui5zdWJ0cmFjdChxLm11bHRpcGx5KG5ld1IpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXIuaXNVbml0KCkpIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgICAgICBpZiAodC5jb21wYXJlKDApID09PSAtMSkge1xuICAgICAgICAgICAgdCA9IHQuYWRkKG4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHQubmVnYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kSW52ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnYgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnY7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbCh2YWx1ZSwgMSwgdGhpcy5zaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwodmFsdWUsIDEpLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgKyAxIDwgTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgKyAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCBmYWxzZSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKyBCaWdJbnQoMSkpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgLSAxID4gLU1BWF9JTlQpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlIC0gMSk7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihNQVhfSU5UX0FSUiwgdHJ1ZSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLSBCaWdJbnQoMSkpO1xuICAgIH1cblxuICAgIHZhciBwb3dlcnNPZlR3byA9IFsxXTtcbiAgICB3aGlsZSAoMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdIDw9IEJBU0UpIHBvd2Vyc09mVHdvLnB1c2goMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdKTtcbiAgICB2YXIgcG93ZXJzMkxlbmd0aCA9IHBvd2Vyc09mVHdvLmxlbmd0aCwgaGlnaGVzdFBvd2VyMiA9IHBvd2Vyc09mVHdvW3Bvd2VyczJMZW5ndGggLSAxXTtcblxuICAgIGZ1bmN0aW9uIHNoaWZ0X2lzU21hbGwobikge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMobikgPD0gQkFTRTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0UmlnaHQoLW4pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKG4gPj0gcG93ZXJzMkxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0Lm11bHRpcGx5KHBvd2Vyc09mVHdvW25dKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQ7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlbVF1bztcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgaWYgKCFzaGlmdF9pc1NtYWxsKG4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKG4pICsgXCIgaXMgdG9vIGxhcmdlIGZvciBzaGlmdGluZy5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPCAwKSByZXR1cm4gdGhpcy5zaGlmdExlZnQoLW4pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKG4gPj0gcG93ZXJzMkxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSB8fCAocmVzdWx0LmlzTmVnYXRpdmUoKSAmJiByZXN1bHQuaXNVbml0KCkpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgcmVtUXVvID0gZGl2TW9kQW55KHJlc3VsdCwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICByZXN1bHQgPSByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICAgICAgICAgIG4gLT0gcG93ZXJzMkxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmVtUXVvID0gZGl2TW9kQW55KHJlc3VsdCwgcG93ZXJzT2ZUd29bbl0pO1xuICAgICAgICByZXR1cm4gcmVtUXVvWzFdLmlzTmVnYXRpdmUoKSA/IHJlbVF1b1swXS5wcmV2KCkgOiByZW1RdW9bMF07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0O1xuXG4gICAgZnVuY3Rpb24gYml0d2lzZSh4LCB5LCBmbikge1xuICAgICAgICB5ID0gcGFyc2VWYWx1ZSh5KTtcbiAgICAgICAgdmFyIHhTaWduID0geC5pc05lZ2F0aXZlKCksIHlTaWduID0geS5pc05lZ2F0aXZlKCk7XG4gICAgICAgIHZhciB4UmVtID0geFNpZ24gPyB4Lm5vdCgpIDogeCxcbiAgICAgICAgICAgIHlSZW0gPSB5U2lnbiA/IHkubm90KCkgOiB5O1xuICAgICAgICB2YXIgeERpZ2l0ID0gMCwgeURpZ2l0ID0gMDtcbiAgICAgICAgdmFyIHhEaXZNb2QgPSBudWxsLCB5RGl2TW9kID0gbnVsbDtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICB3aGlsZSAoIXhSZW0uaXNaZXJvKCkgfHwgIXlSZW0uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHhEaXZNb2QgPSBkaXZNb2RBbnkoeFJlbSwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICB4RGlnaXQgPSB4RGl2TW9kWzFdLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgICAgIGlmICh4U2lnbikge1xuICAgICAgICAgICAgICAgIHhEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geERpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHlEaXZNb2QgPSBkaXZNb2RBbnkoeVJlbSwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICB5RGlnaXQgPSB5RGl2TW9kWzFdLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgICAgIGlmICh5U2lnbikge1xuICAgICAgICAgICAgICAgIHlEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geURpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHhSZW0gPSB4RGl2TW9kWzBdO1xuICAgICAgICAgICAgeVJlbSA9IHlEaXZNb2RbMF07XG4gICAgICAgICAgICByZXN1bHQucHVzaChmbih4RGlnaXQsIHlEaWdpdCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdW0gPSBmbih4U2lnbiA/IDEgOiAwLCB5U2lnbiA/IDEgOiAwKSAhPT0gMCA/IGJpZ0ludCgtMSkgOiBiaWdJbnQoMCk7XG4gICAgICAgIGZvciAodmFyIGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgIHN1bSA9IHN1bS5tdWx0aXBseShoaWdoZXN0UG93ZXIyKS5hZGQoYmlnSW50KHJlc3VsdFtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5wcmV2KCk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5vdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgJiBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYW5kID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQ7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBiaXR3aXNlKHRoaXMsIG4sIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhIHwgYjsgfSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm9yO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgXiBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUueG9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3I7XG5cbiAgICB2YXIgTE9CTUFTS19JID0gMSA8PCAzMCwgTE9CTUFTS19CSSA9IChCQVNFICYgLUJBU0UpICogKEJBU0UgJiAtQkFTRSkgfCBMT0JNQVNLX0k7XG4gICAgZnVuY3Rpb24gcm91Z2hMT0IobikgeyAvLyBnZXQgbG93ZXN0T25lQml0IChyb3VnaClcbiAgICAgICAgLy8gU21hbGxJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAzMClcbiAgICAgICAgLy8gQmlnSW50ZWdlcjogcmV0dXJuIE1pbihsb3dlc3RPbmVCaXQobiksIDEgPDwgMTQpIFtCQVNFPTFlN11cbiAgICAgICAgdmFyIHYgPSBuLnZhbHVlLFxuICAgICAgICAgICAgeCA9IHR5cGVvZiB2ID09PSBcIm51bWJlclwiID8gdiB8IExPQk1BU0tfSSA6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHYgPT09IFwiYmlnaW50XCIgPyB2IHwgQmlnSW50KExPQk1BU0tfSSkgOlxuICAgICAgICAgICAgICAgICAgICB2WzBdICsgdlsxXSAqIEJBU0UgfCBMT0JNQVNLX0JJO1xuICAgICAgICByZXR1cm4geCAmIC14O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGludGVnZXJMb2dhcml0aG0odmFsdWUsIGJhc2UpIHtcbiAgICAgICAgaWYgKGJhc2UuY29tcGFyZVRvKHZhbHVlKSA8PSAwKSB7XG4gICAgICAgICAgICB2YXIgdG1wID0gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZS5zcXVhcmUoYmFzZSkpO1xuICAgICAgICAgICAgdmFyIHAgPSB0bXAucDtcbiAgICAgICAgICAgIHZhciBlID0gdG1wLmU7XG4gICAgICAgICAgICB2YXIgdCA9IHAubXVsdGlwbHkoYmFzZSk7XG4gICAgICAgICAgICByZXR1cm4gdC5jb21wYXJlVG8odmFsdWUpIDw9IDAgPyB7IHA6IHQsIGU6IGUgKiAyICsgMSB9IDogeyBwOiBwLCBlOiBlICogMiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHA6IGJpZ0ludCgxKSwgZTogMCB9O1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA8IDApIHtcbiAgICAgICAgICAgIG4gPSBuLm5lZ2F0ZSgpLnN1YnRyYWN0KGJpZ0ludCgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uY29tcGFyZVRvKGJpZ0ludCgwKSkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiaWdJbnQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpZ0ludChpbnRlZ2VyTG9nYXJpdGhtKG4sIGJpZ0ludCgyKSkuZSkuYWRkKGJpZ0ludCgxKSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYml0TGVuZ3RoID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBtYXgoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmdyZWF0ZXIoYikgPyBhIDogYjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWluKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xuICAgICAgICByZXR1cm4gYS5sZXNzZXIoYikgPyBhIDogYjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2NkKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICBpZiAoYS5lcXVhbHMoYikpIHJldHVybiBhO1xuICAgICAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGI7XG4gICAgICAgIGlmIChiLmlzWmVybygpKSByZXR1cm4gYTtcbiAgICAgICAgdmFyIGMgPSBJbnRlZ2VyWzFdLCBkLCB0O1xuICAgICAgICB3aGlsZSAoYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBkID0gbWluKHJvdWdoTE9CKGEpLCByb3VnaExPQihiKSk7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUoZCk7XG4gICAgICAgICAgICBiID0gYi5kaXZpZGUoZCk7XG4gICAgICAgICAgICBjID0gYy5tdWx0aXBseShkKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICAgICAgYSA9IGEuZGl2aWRlKHJvdWdoTE9CKGEpKTtcbiAgICAgICAgfVxuICAgICAgICBkbyB7XG4gICAgICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICAgICAgICAgIGIgPSBiLmRpdmlkZShyb3VnaExPQihiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYS5ncmVhdGVyKGIpKSB7XG4gICAgICAgICAgICAgICAgdCA9IGI7IGIgPSBhOyBhID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBiLnN1YnRyYWN0KGEpO1xuICAgICAgICB9IHdoaWxlICghYi5pc1plcm8oKSk7XG4gICAgICAgIHJldHVybiBjLmlzVW5pdCgpID8gYSA6IGEubXVsdGlwbHkoYyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxjbShhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpLmFicygpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKS5hYnMoKTtcbiAgICAgICAgcmV0dXJuIGEuZGl2aWRlKGdjZChhLCBiKSkubXVsdGlwbHkoYik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJhbmRCZXR3ZWVuKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xuICAgICAgICB2YXIgbG93ID0gbWluKGEsIGIpLCBoaWdoID0gbWF4KGEsIGIpO1xuICAgICAgICB2YXIgcmFuZ2UgPSBoaWdoLnN1YnRyYWN0KGxvdykuYWRkKDEpO1xuICAgICAgICBpZiAocmFuZ2UuaXNTbWFsbCkgcmV0dXJuIGxvdy5hZGQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZ2UpKTtcbiAgICAgICAgdmFyIGRpZ2l0cyA9IHRvQmFzZShyYW5nZSwgQkFTRSkudmFsdWU7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXSwgcmVzdHJpY3RlZCA9IHRydWU7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdG9wID0gcmVzdHJpY3RlZCA/IGRpZ2l0c1tpXSA6IEJBU0U7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSB0cnVuY2F0ZShNYXRoLnJhbmRvbSgpICogdG9wKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRpZ2l0KTtcbiAgICAgICAgICAgIGlmIChkaWdpdCA8IHRvcCkgcmVzdHJpY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb3cuYWRkKEludGVnZXIuZnJvbUFycmF5KHJlc3VsdCwgQkFTRSwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICB2YXIgcGFyc2VCYXNlID0gZnVuY3Rpb24gKHRleHQsIGJhc2UsIGFscGhhYmV0LCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGFscGhhYmV0ID0gYWxwaGFiZXQgfHwgREVGQVVMVF9BTFBIQUJFVDtcbiAgICAgICAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcbiAgICAgICAgaWYgKCFjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBhYnNCYXNlID0gTWF0aC5hYnMoYmFzZSk7XG4gICAgICAgIHZhciBhbHBoYWJldFZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWxwaGFiZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFscGhhYmV0VmFsdWVzW2FscGhhYmV0W2ldXSA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHRleHRbaV07XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCItXCIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWxwaGFiZXRWYWx1ZXNbY10gPj0gYWJzQmFzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCIxXCIgJiYgYWJzQmFzZSA9PT0gMSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihjICsgXCIgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gYmFzZSBcIiArIGJhc2UgKyBcIi5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJhc2UgPSBwYXJzZVZhbHVlKGJhc2UpO1xuICAgICAgICB2YXIgZGlnaXRzID0gW107XG4gICAgICAgIHZhciBpc05lZ2F0aXZlID0gdGV4dFswXSA9PT0gXCItXCI7XG4gICAgICAgIGZvciAoaSA9IGlzTmVnYXRpdmUgPyAxIDogMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjIGluIGFscGhhYmV0VmFsdWVzKSBkaWdpdHMucHVzaChwYXJzZVZhbHVlKGFscGhhYmV0VmFsdWVzW2NdKSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09PSBcIjxcIikge1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IGk7XG4gICAgICAgICAgICAgICAgZG8geyBpKys7IH0gd2hpbGUgKHRleHRbaV0gIT09IFwiPlwiICYmIGkgPCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgZGlnaXRzLnB1c2gocGFyc2VWYWx1ZSh0ZXh0LnNsaWNlKHN0YXJ0ICsgMSwgaSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBjaGFyYWN0ZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKSB7XG4gICAgICAgIHZhciB2YWwgPSBJbnRlZ2VyWzBdLCBwb3cgPSBJbnRlZ2VyWzFdLCBpO1xuICAgICAgICBmb3IgKGkgPSBkaWdpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5hZGQoZGlnaXRzW2ldLnRpbWVzKHBvdykpO1xuICAgICAgICAgICAgcG93ID0gcG93LnRpbWVzKGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05lZ2F0aXZlID8gdmFsLm5lZ2F0ZSgpIDogdmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeShkaWdpdCwgYWxwaGFiZXQpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICBpZiAoZGlnaXQgPCBhbHBoYWJldC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhbHBoYWJldFtkaWdpdF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiPFwiICsgZGlnaXQgKyBcIj5cIjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0Jhc2UobiwgYmFzZSkge1xuICAgICAgICBiYXNlID0gYmlnSW50KGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkge1xuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29udmVydCBub256ZXJvIG51bWJlcnMgdG8gYmFzZSAwLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZS5lcXVhbHMoLTEpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBBcnJheS5hcHBseShudWxsLCBBcnJheSgtbi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzEsIDBdKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciBhcnIgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShuLnRvSlNOdW1iZXIoKSAtIDEpKVxuICAgICAgICAgICAgICAgIC5tYXAoQXJyYXkucHJvdG90eXBlLnZhbHVlT2YsIFswLCAxXSk7XG4gICAgICAgICAgICBhcnIudW5zaGlmdChbMV0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBhcnIpLFxuICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5lZyA9IGZhbHNlO1xuICAgICAgICBpZiAobi5pc05lZ2F0aXZlKCkgJiYgYmFzZS5pc1Bvc2l0aXZlKCkpIHtcbiAgICAgICAgICAgIG5lZyA9IHRydWU7XG4gICAgICAgICAgICBuID0gbi5hYnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZS5pc1VuaXQoKSkge1xuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpKSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsIDEpLFxuICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IG5lZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIHZhciBsZWZ0ID0gbiwgZGl2bW9kO1xuICAgICAgICB3aGlsZSAobGVmdC5pc05lZ2F0aXZlKCkgfHwgbGVmdC5jb21wYXJlQWJzKGJhc2UpID49IDApIHtcbiAgICAgICAgICAgIGRpdm1vZCA9IGxlZnQuZGl2bW9kKGJhc2UpO1xuICAgICAgICAgICAgbGVmdCA9IGRpdm1vZC5xdW90aWVudDtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IGRpdm1vZC5yZW1haW5kZXI7XG4gICAgICAgICAgICBpZiAoZGlnaXQuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQgPSBiYXNlLm1pbnVzKGRpZ2l0KS5hYnMoKTtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQucHVzaChkaWdpdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICB9XG4gICAgICAgIG91dC5wdXNoKGxlZnQudG9KU051bWJlcigpKTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG91dC5yZXZlcnNlKCksIGlzTmVnYXRpdmU6IG5lZyB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZVN0cmluZyhuLCBiYXNlLCBhbHBoYWJldCkge1xuICAgICAgICB2YXIgYXJyID0gdG9CYXNlKG4sIGJhc2UpO1xuICAgICAgICByZXR1cm4gKGFyci5pc05lZ2F0aXZlID8gXCItXCIgOiBcIlwiKSArIGFyci52YWx1ZS5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZnkoeCwgYWxwaGFiZXQpO1xuICAgICAgICB9KS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAocmFkaXgsIGFscGhhYmV0KSB7XG4gICAgICAgIGlmIChyYWRpeCA9PT0gdW5kZWZpbmVkKSByYWRpeCA9IDEwO1xuICAgICAgICBpZiAocmFkaXggIT09IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZSwgbCA9IHYubGVuZ3RoLCBzdHIgPSBTdHJpbmcodlstLWxdKSwgemVyb3MgPSBcIjAwMDAwMDBcIiwgZGlnaXQ7XG4gICAgICAgIHdoaWxlICgtLWwgPj0gMCkge1xuICAgICAgICAgICAgZGlnaXQgPSBTdHJpbmcodltsXSk7XG4gICAgICAgICAgICBzdHIgKz0gemVyb3Muc2xpY2UoZGlnaXQubGVuZ3RoKSArIGRpZ2l0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdGhpcy5zaWduID8gXCItXCIgOiBcIlwiO1xuICAgICAgICByZXR1cm4gc2lnbiArIHN0cjtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPSAxMCkgcmV0dXJuIHRvQmFzZVN0cmluZyh0aGlzLCByYWRpeCwgYWxwaGFiZXQpO1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvU3RyaW5nID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZztcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU09OID0gQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU09OID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnRvU3RyaW5nKCk7IH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvSlNOdW1iZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZjtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvSlNOdW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN0cmluZ1ZhbHVlKHYpIHtcbiAgICAgICAgaWYgKGlzUHJlY2lzZSgrdikpIHtcbiAgICAgICAgICAgIHZhciB4ID0gK3Y7XG4gICAgICAgICAgICBpZiAoeCA9PT0gdHJ1bmNhdGUoeCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRzTmF0aXZlQmlnSW50ID8gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQoeCkpIDogbmV3IFNtYWxsSW50ZWdlcih4KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyB2KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbiA9IHZbMF0gPT09IFwiLVwiO1xuICAgICAgICBpZiAoc2lnbikgdiA9IHYuc2xpY2UoMSk7XG4gICAgICAgIHZhciBzcGxpdCA9IHYuc3BsaXQoL2UvaSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPiAyKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgc3BsaXQuam9pbihcImVcIikpO1xuICAgICAgICBpZiAoc3BsaXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB2YXIgZXhwID0gc3BsaXRbMV07XG4gICAgICAgICAgICBpZiAoZXhwWzBdID09PSBcIitcIikgZXhwID0gZXhwLnNsaWNlKDEpO1xuICAgICAgICAgICAgZXhwID0gK2V4cDtcbiAgICAgICAgICAgIGlmIChleHAgIT09IHRydW5jYXRlKGV4cCkgfHwgIWlzUHJlY2lzZShleHApKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgZXhwICsgXCIgaXMgbm90IGEgdmFsaWQgZXhwb25lbnQuXCIpO1xuICAgICAgICAgICAgdmFyIHRleHQgPSBzcGxpdFswXTtcbiAgICAgICAgICAgIHZhciBkZWNpbWFsUGxhY2UgPSB0ZXh0LmluZGV4T2YoXCIuXCIpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWxQbGFjZSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZXhwIC09IHRleHQubGVuZ3RoIC0gZGVjaW1hbFBsYWNlIC0gMTtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCBkZWNpbWFsUGxhY2UpICsgdGV4dC5zbGljZShkZWNpbWFsUGxhY2UgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHAgPCAwKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgaW5jbHVkZSBuZWdhdGl2ZSBleHBvbmVudCBwYXJ0IGZvciBpbnRlZ2Vyc1wiKTtcbiAgICAgICAgICAgIHRleHQgKz0gKG5ldyBBcnJheShleHAgKyAxKSkuam9pbihcIjBcIik7XG4gICAgICAgICAgICB2ID0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNWYWxpZCA9IC9eKFswLTldWzAtOV0qKSQvLnRlc3Qodik7XG4gICAgICAgIGlmICghaXNWYWxpZCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludChzaWduID8gXCItXCIgKyB2IDogdikpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gW10sIG1heCA9IHYubGVuZ3RoLCBsID0gTE9HX0JBU0UsIG1pbiA9IG1heCAtIGw7XG4gICAgICAgIHdoaWxlIChtYXggPiAwKSB7XG4gICAgICAgICAgICByLnB1c2goK3Yuc2xpY2UobWluLCBtYXgpKTtcbiAgICAgICAgICAgIG1pbiAtPSBsO1xuICAgICAgICAgICAgaWYgKG1pbiA8IDApIG1pbiA9IDA7XG4gICAgICAgICAgICBtYXggLT0gbDtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VOdW1iZXJWYWx1ZSh2KSB7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHYpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcmVjaXNlKHYpKSB7XG4gICAgICAgICAgICBpZiAodiAhPT0gdHJ1bmNhdGUodikpIHRocm93IG5ldyBFcnJvcih2ICsgXCIgaXMgbm90IGFuIGludGVnZXIuXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodi50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJWYWx1ZSh2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1ZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIC8vIFByZS1kZWZpbmUgbnVtYmVycyBpbiByYW5nZSBbLTk5OSw5OTldXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHtcbiAgICAgICAgSW50ZWdlcltpXSA9IHBhcnNlVmFsdWUoaSk7XG4gICAgICAgIGlmIChpID4gMCkgSW50ZWdlclstaV0gPSBwYXJzZVZhbHVlKC1pKTtcbiAgICB9XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBJbnRlZ2VyLm9uZSA9IEludGVnZXJbMV07XG4gICAgSW50ZWdlci56ZXJvID0gSW50ZWdlclswXTtcbiAgICBJbnRlZ2VyLm1pbnVzT25lID0gSW50ZWdlclstMV07XG4gICAgSW50ZWdlci5tYXggPSBtYXg7XG4gICAgSW50ZWdlci5taW4gPSBtaW47XG4gICAgSW50ZWdlci5nY2QgPSBnY2Q7XG4gICAgSW50ZWdlci5sY20gPSBsY207XG4gICAgSW50ZWdlci5pc0luc3RhbmNlID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggaW5zdGFuY2VvZiBCaWdJbnRlZ2VyIHx8IHggaW5zdGFuY2VvZiBTbWFsbEludGVnZXIgfHwgeCBpbnN0YW5jZW9mIE5hdGl2ZUJpZ0ludDsgfTtcbiAgICBJbnRlZ2VyLnJhbmRCZXR3ZWVuID0gcmFuZEJldHdlZW47XG5cbiAgICBJbnRlZ2VyLmZyb21BcnJheSA9IGZ1bmN0aW9uIChkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMubWFwKHBhcnNlVmFsdWUpLCBwYXJzZVZhbHVlKGJhc2UgfHwgMTApLCBpc05lZ2F0aXZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIEludGVnZXI7XG59KSgpO1xuIiwiLyogZ2xvYmFsIGJpZ0ludCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLy8gV2UgcmVwcmVzZW50IGEgW1oudF0gYXMgYSBqYXZhc2NyaXB0IDMyYml0IGludGVnZXJzIGlmIGl0IGZpdHMgb3IgYXMgYSBiaWdJbnQuXG5cbi8vUHJvdmlkZXM6IG1sX3pfbm9ybWFsaXplXG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbm9ybWFsaXplKHgpe1xuICB2YXIgeSA9IHgudG9KU051bWJlciAoKSB8IDA7XG4gIGlmKHguZXF1YWxzKGJpZ0ludCh5KSkpIHJldHVybiB5O1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogbWxfel9tdWxfb3ZlcmZsb3dzXG5mdW5jdGlvbiBtbF96X211bF9vdmVyZmxvd3MoeCx5KXtcbiAgdmFyIHogPSB4Knk7XG4gIHJldHVybiB6ICE9ICh6fDApO1xufVxuXG4vL2V4dGVybmFsIGluaXQ6IHVuaXQgLT4gdW5pdFxuLy9Qcm92aWRlczogbWxfel9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX3phcml0aF9tYXJzaGFsLCBjYW1sX3phcml0aF91bm1hcnNoYWwsIGNhbWxfY3VzdG9tX29wcywgbWxfel9oYXNoLCBtbF96X2NvbXBhcmVcbmZ1bmN0aW9uIG1sX3pfaW5pdCh1bml0KSB7XG4gIGNhbWxfY3VzdG9tX29wc1snX3onXSA9XG4gICAgeyBzZXJpYWxpemUgOiBjYW1sX3phcml0aF9tYXJzaGFsLFxuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX3phcml0aF91bm1hcnNoYWwsXG4gICAgICBoYXNoIDogbWxfel9oYXNoLFxuICAgICAgY29tcGFyZSA6IG1sX3pfY29tcGFyZSxcbiAgICB9O1xuICByZXR1cm4gMCB9XG5cbi8vZXh0ZXJuYWwgbmVnOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmVnIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25lZyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5uZWdhdGUoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWRkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9hZGQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfYWRkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hZGQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHN1YjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3ViIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Yih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc3VidHJhY3QoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIG11bDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X211bCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubXVsdGlwbHkoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Rpdih6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpXG4gIGlmKHoyLmVxdWFscyhiaWdJbnQoMCkpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmRpdmlkZShiaWdJbnQoejIpKSlcbn1cblxuLy9leHRlcm5hbCBjZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9jZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfYWRkXG5mdW5jdGlvbiBtbF96X2NkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA+IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X2FkZChtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgZmRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZmRpdlxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdiwgbWxfel9zaWduLCBtbF96X3N1YlxuZnVuY3Rpb24gbWxfel9mZGl2KHoxLCB6Mikge1xuICB2YXIgejFfcG9zID0gbWxfel9zaWduKHoxKTtcbiAgdmFyIHoyX3BvcyA9IG1sX3pfc2lnbih6Mik7XG4gIGlmICh6MV9wb3MgKiB6Ml9wb3MgPCAwKSAvKiBNdWx0aXBsaWNhdGlvbiBpcyBsaWtlIGEgc2lnbndpc2UgeG9yICovIHtcbiAgICBpZiAoIWJpZ0ludCh6MSkubW9kKGJpZ0ludCh6MikpLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgICByZXR1cm4gbWxfel9zdWIobWxfel9kaXYoejEsIHoyKSwgYmlnSW50KDEpKSA7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG4vL2V4dGVybmFsIHJlbTogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcmVtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3JlbSh6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpO1xuICBpZiAoejIuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubW9kKHoyKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2X3JlbTogdCAtPiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfZGl2X3JlbVxuLy9SZXF1aXJlczogbWxfel9kaXYsIG1sX3pfcmVtXG5mdW5jdGlvbiBtbF96X2Rpdl9yZW0oejEsIHoyKSB7XG4gIHJldHVybiBbMCwgbWxfel9kaXYoejEsejIpLCBtbF96X3JlbSh6MSwgejIpXVxufVxuLy9leHRlcm5hbCBzdWNjOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3VjYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zdWNjKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5leHQoKSk7XG59XG5cbi8vZXh0ZXJuYWwgcHJlZDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3ByZWQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJlZCh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wcmV2KCkpO1xufVxuXG4vL2V4dGVybmFsIGFiczogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FicyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hYnMoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ2FuZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nYW5kIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ2FuZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYW5kKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nb3IgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nb3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2d4b3I6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ3hvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2d4b3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnhvcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nbm90OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nbm90IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nbm90KHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5vdCgpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9sZWZ0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X2xlZnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfbGVmdCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0TGVmdChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0UmlnaHQoYW10KSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfcmlnaHRfdHJ1bmM6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2RpdihiaWdJbnQoejEpLCBiaWdJbnQoMikucG93KHoyKSlcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQzMiBjb25zdFxuZnVuY3Rpb24gbWxfel9vZl9pbnQzMihpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9uYXRpdmVpbnQ6IG5hdGl2ZWludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX25hdGl2ZWludCBjb25zdFxuZnVuY3Rpb24gbWxfel9vZl9uYXRpdmVpbnQoaSkge1xuICByZXR1cm4gaSB8IDA7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfaW50NjQ6IGludDY0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfaW50NjQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X25lZywgbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLGNhbWxfaW50NjRfaGkzMixjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIG1sX3pfb2ZfaW50NjQoaTY0KSB7XG4gIHZhciBuZWcgPSBmYWxzZTtcbiAgaWYoY2FtbF9pbnQ2NF9jb21wYXJlKGk2NCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMCwwKSkgPCAwKSB7XG4gICAgbmVnID0gdHJ1ZTtcbiAgICBpNjQgPSBjYW1sX2ludDY0X25lZyhpNjQpXG4gIH1cbiAgdmFyIGxvID0gY2FtbF9pbnQ2NF9sbzMyKGk2NCkgPj4+IDA7XG4gIHZhciBoaSA9IGNhbWxfaW50NjRfaGkzMihpNjQpID4+PiAwO1xuICB2YXIgeCA9IGJpZ0ludChsbykuYWRkKGJpZ0ludChoaSkuc2hpZnRMZWZ0KDMyKSk7XG4gIGlmKG5lZykgeyB4ID0geC5uZWdhdGUoKSB9O1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoeClcbn1cblxuLy9leHRlcm5hbCBvZl9mbG9hdDogZmxvYXQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9mbG9hdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9vZl9mbG9hdChmMSkge1xuICBpZihmMSA9PSBJbmZpbml0eSB8fCBmMSA9PSAtSW5maW5pdHkgfHwgZjEgIT0gZjEpXG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoZjE8MD9NYXRoLmNlaWwoZjEpOk1hdGguZmxvb3IoZjEpKSk7XG59XG5cbi8vZXh0ZXJuYWwgdG9faW50OiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel90b19pbnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel90b19pbnQoejEpIHtcbiAgaWYgKHoxID09ICh6MSB8IDApKSByZXR1cm4gejEgfCAwO1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQzMjogdCAtPiBpbnQzMlxuLy9Qcm92aWRlczogbWxfel90b19pbnQzMlxuLy9SZXF1aXJlczogbWxfel90b19pbnRcbmZ1bmN0aW9uIG1sX3pfdG9faW50MzIoejEpIHsgcmV0dXJuIG1sX3pfdG9faW50KHoxKSB9XG5cbi8vZXh0ZXJuYWwgdG9faW50NjQ6IHQgLT4gaW50NjRcbi8vUHJvdmlkZXM6IG1sX3pfdG9faW50NjRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9maXRzX2ludDY0LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaVxuZnVuY3Rpb24gbWxfel90b19pbnQ2NCh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSlcbiAgaWYoIW1sX3pfZml0c19pbnQ2NCh6MSkpIHtcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgfVxuICB2YXIgbWFzayA9IGJpZ0ludCgweGZmZmZmZmZmKVxuICB2YXIgbG8gPSB6MS5hbmQobWFzaykudG9KU051bWJlcigpO1xuICB2YXIgaGkgPSB6MS5zaGlmdFJpZ2h0KDMyKS5hbmQobWFzaykudG9KU051bWJlcigpO1xuICB2YXIgeCA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSk7XG4gIHJldHVybiB4O1xufVxuXG4vL2V4dGVybmFsIHRlc3RiaXQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel90ZXN0Yml0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfdGVzdGJpdCh6LHBvcyl7XG4gIHogPSBiaWdJbnQoeik7XG4gIHJldHVybiAoei5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgxKSkudG9KU051bWJlcigpKXwwO1xufVxuXG4vL2V4dGVybmFsIHRvX25hdGl2ZWludDogdCAtPiBuYXRpdmVpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdG9fbmF0aXZlaW50XG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19uYXRpdmVpbnQoejEpIHsgcmV0dXJuIG1sX3pfdG9faW50KHoxKSB9XG5cbi8vZXh0ZXJuYWwgZm9ybWF0OiBzdHJpbmcgLT4gdCAtPiBzdHJpbmdcbi8vUHJvdmlkZXM6IG1sX3pfZm9ybWF0IFxuLy9SZXF1aXJlczogYmlnSW50XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9mb3JtYXQoZm10LCB6MSkge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHZhciBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9aYXJpdGgvYmxvYi9kMDU1NWQ0NTFjZTI5NWM0NDk3ZjI0YThkOTk5M2Y4ZGQyMzA5N2RmL3oubWxpcCNMMjk3XG4gIHZhciBiYXNlID0gMTA7XG4gIHZhciBjYXMgPSAwO1xuICB2YXIgd2lkdGggPSAwO1xuICB2YXIgYWx0ID0gMDtcbiAgdmFyIGRpciA9IDA7XG4gIHZhciBzaWduID0gJyc7XG4gIHZhciBwYWQgPSAnICc7XG4gIHZhciBpZHggPSAwO1xuICB2YXIgcHJlZml4PVwiXCI7XG4gIHdoaWxlKGZtdFtpZHhdID09ICclJykgaWR4Kys7XG4gIGZvcig7OyBpZHgrKykge1xuICAgIGlmKGZtdFtpZHhdID09ICcjJykgYWx0ID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnMCcpIHBhZCA9ICcwJztcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnLScpIGRpciA9IDE7XG4gICAgZWxzZSBpZiAoZm10W2lkeF0gPT0gJyAnIHx8IGZtdFtpZHhdID09ICcrJykgc2lnbiA9IGZtdFtpZHhdO1xuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgaWYoejEubHQoYmlnSW50KDApKSl7c2lnbiA9ICctJzt6MSA9IHoxLm5lZ2F0ZSgpfTtcbiAgZm9yKDtmbXRbaWR4XT49JzAnICYmIGZtdFtpZHhdIDw9JzknO2lkeCsrKVxuICAgIHdpZHRoPTEwKndpZHRoICsgKCtmbXRbaWR4XSk7XG4gIHN3aXRjaChmbXRbaWR4XSl7XG4gIGNhc2UgJ2knOiBjYXNlICdkJzogY2FzZSAndSc6IGJyZWFrO1xuICBjYXNlICdiJzogYmFzZSA9IDI7IGlmKGFsdCkgcHJlZml4ID0gXCIwYlwiOyBicmVhaztcbiAgY2FzZSAnbyc6IGJhc2UgPSA4OyBpZihhbHQpIHByZWZpeCA9IFwiMG9cIjsgYnJlYWs7XG4gIGNhc2UgJ3gnOiBiYXNlID0gMTY7IGlmKGFsdCkgcHJlZml4ID0gXCIweFwiOyBicmVhaztcbiAgY2FzZSAnWCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjBYXCI7IGNhcyA9IDE7IGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJVbnN1cHBvcnRlZCBmb3JtYXQgJ1wiICsgZm10ICsgXCInXCIpO1xuICB9XG4gIGlmIChkaXIpIHBhZCA9ICcgJztcbiAgdmFyIHJlcyA9IHoxLnRvU3RyaW5nKGJhc2UpO1xuICBpZiAoY2FzID09PSAxKSB7XG4gICAgcmVzID0gcmVzLnRvVXBwZXJDYXNlKCk7XG4gIH1cbiAgdmFyIHNpemUgPSByZXMubGVuZ3RoO1xuICBpZiAocGFkID09ICcgJykge1xuICAgIGlmKGRpcikge1xuICAgICAgcmVzID0gc2lnbiArIHByZWZpeCArIHJlcztcbiAgICAgIGZvcig7cmVzLmxlbmd0aDx3aWR0aDspIHJlcyA9IHJlcyArIHBhZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gc2lnbiArIHByZWZpeCArIHJlcztcbiAgICAgIGZvcig7cmVzLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHByZSA9IHNpZ24gKyBwcmVmaXg7XG4gICAgZm9yKDtyZXMubGVuZ3RoK3ByZS5sZW5ndGg8d2lkdGg7KSByZXMgPSBwYWQgKyByZXM7XG4gICAgcmVzID0gcHJlICsgcmVzO1xuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fel9vZl9qc19zdHJpbmdfYmFzZVxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcykge1xuICBpZiAoYmFzZSA9PSAwKSB7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9aYXJpdGgvYmxvYi9iOGRiYWY0OGE3OTI3MDYxZGY2OTlhZDdjZTY0MmJiNGYxZmU1MzA4L2NhbWxfei5jI0w1OThcbiAgICBiYXNlID0gMTA7XG4gICAgdmFyIHAgPSAwO1xuICAgIHZhciBzaWduID0gMTtcbiAgICBpZihzW3BdID09ICctJykgeyBzaWduID0gLTE7IHArKyB9XG4gICAgZWxzZSBpZiAoc1twXSA9PSAnKycpIHsgcCsrIH1cbiAgICBpZiAoc1twXSA9PSAnMCcpIHtcbiAgICAgIHAgKys7XG4gICAgICBpZiAocy5sZW5ndGggPT0gcCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiYyA9IHNbcF07XG4gICAgICAgIGlmIChiYyA9PSAnbycgfHwgYmMgPT0gJ08nKSB7XG4gICAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIH0gZWxzZSBpZiAoYmMgPT0gJ3gnIHx8IGJjID09ICdYJykge1xuICAgICAgICAgIGJhc2UgPSAxNjtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAnYicgfHwgYmMgPT0gJ0InKSB7XG4gICAgICAgICAgYmFzZSA9IDI7XG4gICAgICAgIH0gXG4gICAgICAgIGlmKGJhc2UgIT0gMTApIHtcbiAgICAgICAgICBzID0gcy5zdWJzdHJpbmcocCsxKTtcbiAgICAgICAgICBpZihzaWduID09IC0xKSBzID0gXCItXCIgKyBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBmdW5jdGlvbiBkaWdpdChjb2RlKXtcbiAgICBpZihjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHJldHVybiBjb2RlIC0gNDg7XG4gICAgaWYoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikgcmV0dXJuIGNvZGUgLSA5NyArIDEwO1xuICAgIGlmKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgcmV0dXJuIGNvZGUgLSA2NSArIDEwO1xuICB9XG4gIHZhciBpID0gMDtcbiAgaWYgKHNbaV0gPT0gJysnKSB7XG4gICAgLy9yZW1vdmUgbGVhZGluZyAnKydcbiAgICBzID0gcy5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgZWxzZSBpZihzW2ldID09ICctJykgaSsrO1xuICBpZihzW2ldID09ICdfJykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBkaWdpdFwiKTtcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCcnKTtcbiAgLy9ub3JtYWxpemUgXCJlbXB0eVwiIG51bWJlcnNcbiAgaWYocyA9PSAnLScgfHwgcyA9PSAnJykgcyA9ICcwJztcbiAgZm9yKCA7IGkgPCBzLmxlbmd0aCA7IGkrKyl7XG4gICAgdmFyIGMgPSBkaWdpdChzLmNoYXJDb2RlQXQoaSkpO1xuICAgIGlmKGMgPT0gdW5kZWZpbmVkIHx8IGMgPj0gYmFzZSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgZGlnaXRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChzLCBiYXNlKSk7XG4gIFxufVxuXG4vL2V4dGVybmFsIG9mX3N1YnN0cmluZ19iYXNlOiBpbnQgLT4gc3RyaW5nIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX3N1YnN0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBtbF96X29mX3N1YnN0cmluZ19iYXNlKGJhc2UsIHMsIHBvcywgbGVuKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICBpZihwb3MgIT0gMCB8fCBsZW4gIT0gcy5sZW5ndGgpIHtcbiAgICBpZiAocy5sZW5ndGggLSBwb3MgPCBsZW4pIHtcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgb2Zmc2V0IG9yIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcyA9IHMuc2xpY2UocG9zLHBvcytsZW4pO1xuICB9XG4gIHJldHVybiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcyk7XG59XG5cbi8vZXh0ZXJuYWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9jb21wYXJlIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29tcGFyZSh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQoejIpKTtcbn1cblxuLy9leHRlcm5hbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZXF1YWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9lcXVhbCh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuZXF1YWxzKGJpZ0ludCh6MikpID8gMSA6IDA7XG59XG5cbi8vZXh0ZXJuYWwgc2lnbjogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfc2lnbiBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3NpZ24oejEpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQuemVybyk7XG59XG5cbi8vZXh0ZXJuYWwgZ2NkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9nY2Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZ2NkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50LmdjZChiaWdJbnQoejEpLCBiaWdJbnQoejIpKS5hYnMoKSk7XG59XG5cbi8vZXh0ZXJuYWwgbnVtYml0czogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfbnVtYml0cyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X251bWJpdHMoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpLmFicygpO1xuICB2YXIgbiA9IDA7XG4gIHZhciB1cHBlckJvdW5kID0gYmlnSW50Lm9uZTtcbiAgd2hpbGUgKHVwcGVyQm91bmQubGVxKHoxKSkge1xuICAgIG4gKz0gMTtcbiAgICB1cHBlckJvdW5kID0gdXBwZXJCb3VuZC5tdWx0aXBseSgyKTtcbiAgfVxuICByZXR1cm4gbjsgLy8gMl57bi0xfSA8PSB8eHwgPCAyXm5cbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQoejEpIHtcbiAgaWYoejEgPT0gKHoxIHwgMCkpIHJldHVybiAxO1xuICBlbHNlIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50MzI6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X2ZpdHNfaW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50MzIoejEpIHtcbiAgcmV0dXJuIG1sX3pfZml0c19pbnQoejEpO1xufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50NjQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludDY0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQ2NCh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSlcbiAgaWYgKHoxLmNvbXBhcmUoYmlnSW50KFwiOTIyMzM3MjAzNjg1NDc3NTgwN1wiKSkgPD0gMCAmJiB6MS5jb21wYXJlKGJpZ0ludChcIi05MjIzMzcyMDM2ODU0Nzc1ODA4XCIpKSA+PSAwKVxuICAgIHJldHVybiAxXG4gIGVsc2VcbiAgICByZXR1cm4gMFxufVxuXG4vL2V4dGVybmFsIGZpdHNfbmF0aXZlaW50OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfZml0c19pbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19uYXRpdmVpbnQoejEpIHtcbiAgcmV0dXJuIG1sX3pfZml0c19pbnQoejEpO1xufVxuXG4vL2V4dGVybmFsIHBvd206IHQgLT4gdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93bVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgbWxfel9pbnZlcnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIG1sX3pfcG93bSh6MSwgejIsIHozKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHoyID0gYmlnSW50KHoyKTtcbiAgejMgPSBiaWdJbnQoejMpO1xuICBpZih6My5lcXVhbHMoemVybykpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgaWYoejMuYWJzKCkuZXF1YWxzKG9uZSkpIHJldHVybiAwO1xuICBpZih6Mi5lcXVhbHMoemVybykpIHJldHVybiAxO1xuICBpZih6Mi5sdCgwKSkge1xuICAgIHZhciBpbnYgPSBiaWdJbnQobWxfel9pbnZlcnQoejEsIHozKSk7XG4gICAgdmFyIHIgPSBpbnYubW9kUG93KHoyLm5lZ2F0ZSgpLCB6Myk7XG4gICAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKHozLmFicygpKTtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHIgPSBiaWdJbnQoejEpLm1vZFBvdyh6MiwgejMpO1xuICAgIGlmKHIubHQoemVybykpIHIgPSByLmFkZCh6My5hYnMoKSk7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgcG93bjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcG93KHoxLCBpMSkge1xuICBpMSA9IGJpZ0ludChpMSk7XG4gIGlmIChpMS5sdChiaWdJbnQoMCkpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3c6IGV4cG9uZW50IG11c3QgYmUgbm9ubmVnYXRpdmVcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkucG93KGkxKSk7XG59XG5cbi8vZXh0ZXJuYWwgaGFzaDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gbWxfel9oYXNoKHoxKSB7XG4gIHZhciBhID0gYmlnSW50KHoxKS50b0FycmF5KE1hdGgucG93KDIsIDMyKSk7XG4gIHZhciBhY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGEudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICBhY2MgPSBjYW1sX2hhc2hfbWl4X2ludChhY2MsIGEudmFsdWVbaV0pO1xuICB9XG4gIGlmKGEudmFsdWUubGVuZ3RoICUgMiAhPSAwKSB7XG4gICAgYWNjID0gY2FtbF9oYXNoX21peF9pbnQoYWNjLCAwKTtcbiAgfVxuICBpZihhLmlzTmVnYXRpdmUpe1xuICAgIGFjYyA9IGFjYyArIDFcbiAgfVxuICByZXR1cm4gYWNjIHwgMFxufVxuXG4vL2V4dGVybmFsIHRvX2JpdHM6IHQgLT4gc3RyaW5nXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyX3JlcGVhdCwgYmlnSW50XG5mdW5jdGlvbiBtbF96X3RvX2JpdHMoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpLmFicygpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgd2hpbGUoIXoxLmVxdWFscyhiaWdJbnQoMCkpKXtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh6MS5tb2QoYmlnSW50KDI1NikpKTtcbiAgICB6MSA9IHoxLmRpdmlkZShiaWdJbnQoMjU2KSk7XG4gIH1cbiAgd2hpbGUocmVzLmxlbmd0aCAlIDQgIT0gMCl7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9leHRlcm5hbCBvZl9iaXRzOiBzdHJpbmcgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfb2ZfYml0cyh6MSkge1xuICB2YXIgciA9IGJpZ0ludC56ZXJvXG4gIHZhciBiYXNlMSA9IGJpZ0ludCgyNTYpO1xuICB2YXIgYmFzZSA9IGJpZ0ludC5vbmU7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjYW1sX21sX3N0cmluZ19sZW5ndGgoejEpOyBpKyspe1xuICAgIHZhciBkID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh6MSxpKTtcbiAgICByID0gYmlnSW50KGJhc2UpLm11bHRpcGx5KGQpLmFkZChyKTtcbiAgICBiYXNlID0gYmlnSW50KGJhc2UpLm11bHRpcGx5KGJhc2UxKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG59XG5cbi8vZXh0ZXJuYWwgcG93bV9zZWM6IHQgLT4gdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93bV9zZWNcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9wb3dtLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcG93bV9zZWMoejEsIHoyLCB6Mykge1xuICB6MyA9IGJpZ0ludCh6MykuYWJzKCk7XG4gIC8vIHBvd21fc2VjIHJlcXVpcmVzIHRoYXQgdGhlIGV4cG9uZW50IGJlIHBvc2l0aXZlXG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmIChiaWdJbnQoejIpLmx0KG9uZSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvd21fc2VjOiBleHBvbmVudCBtdXN0IGJlIHBvc2l0aXZlXCIpO1xuICB9XG4gIGlmICghYmlnSW50KHozKS5hbmQob25lKS5lcXVhbHMob25lKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93bV9zZWM6IG1vZHVsdXMgbXVzdCBiZSBvZGRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfcG93bSh6MSwgejIsIHozKVxufVxuXG4vL2V4dGVybmFsIHJvb3Q6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcm9vdFxuLy9SZXF1aXJlczogbWxfel9wb3csICBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcm9vdCh6LCBpKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6ID0gYmlnSW50KHopO1xuXG4gIGlmIChpICUgMiA9PT0gMCAmJiB6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5yb290OiBldmVuIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cblxuICBpZiAoei5lcXVhbHMoemVybykgfHwgei5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZSh6KTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IHplcm87XG4gIHZhciBlbmQgPSB6O1xuICB2YXIgYW5zID0gbnVsbDtcblxuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIHdoaWxlIChzdGFydC5sZXEoZW5kKSlcbiAge1xuICAgIHZhciBtaWQgPSBzdGFydC5hZGQoZW5kKS5kaXZpZGUodHdvKTtcbiAgICB2YXIgcG8gPSBtaWQucG93KGkpO1xuICAgIGlmIChwby5lcXVhbHMoeikpIHtcbiAgICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShtaWQpO1xuICAgIH0gZWxzZSBpZiAocG8ubHQoeikpIHtcbiAgICAgIHN0YXJ0ID0gbWlkLm5leHQoKTtcbiAgICAgIGFucyA9IG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gbWlkLnByZXYoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGFucyk7XG59XG5cbi8vZXh0ZXJuYWwgcm9vdHJlbTogdCAtPiBpbnQgLT4gdCAqIHRcbi8vUHJvdmlkZXM6IG1sX3pfcm9vdHJlbVxuLy9SZXF1aXJlczogbWxfel9wb3csICBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcm9vdHJlbSh6LCBpKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6ID0gYmlnSW50KHopO1xuXG4gIGlmIChpICUgMiA9PT0gMCAmJiB6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5yb290cmVtOiBldmVuIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cblxuICBpZiAoei5lcXVhbHMoemVybykgfHwgei5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoeiksIHplcm9dO1xuICB9XG5cbiAgdmFyIHN0YXJ0ID0gemVybztcbiAgdmFyIGVuZCA9IHo7XG4gIHZhciBhbnMgPSBudWxsO1xuXG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgd2hpbGUgKHN0YXJ0LmxlcShlbmQpKVxuICB7XG4gICAgdmFyIG1pZCA9IHN0YXJ0LmFkZChlbmQpLmRpdmlkZSh0d28pO1xuICAgIHZhciBwbyA9IG1pZC5wb3coaSk7XG4gICAgaWYgKHBvLmVxdWFscyh6KSkge1xuICAgICAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShtaWQpLCB6ZXJvXTtcbiAgICB9IGVsc2UgaWYgKHBvLmx0KHopKSB7XG4gICAgICBzdGFydCA9IG1pZC5uZXh0KCk7XG4gICAgICBhbnMgPSBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pZC5wcmV2KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoYW5zKSwgbWxfel9ub3JtYWxpemUoei5taW51cyhhbnMucG93KGkpKSldO1xufVxuXG4vL2V4dGVybmFsIGludmVydDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfaW52ZXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfZ2NkZXh0X2ludGVybiwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfaW52ZXJ0KGEsIG4pIHtcbiAgLy8gQmVjYXVzZSBbYS5tb2RJbnYobildIHByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGZvciBlZGdlIGNhc2VzLFxuICAvLyB3ZSB3cm90ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGdjZGV4dF9pbnRlcm4uXG4gIGEgPSBiaWdJbnQoYSk7XG4gIG4gPSBiaWdJbnQobik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZihuLmFicygpLmVxdWFscyhvbmUpKVxuICAgIHJldHVybiAwO1xuICBpZiAobi5lcXVhbHMoemVybykgJiYgYS5hYnMoKS5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBhO1xuICB9XG4gIGlmIChuLmVxdWFscyh6ZXJvKSB8fCBhLmVxdWFscyh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB2YXIgeCA9IG1sX3pfZ2NkZXh0X2ludGVybihhLCBuKTtcbiAgdmFyIHIgPSBiaWdJbnQoeFsyXSk7XG4gIHZhciB0bXAgPSBiaWdJbnQoYSkubXVsdGlwbHkocikubW9kKG4pO1xuICBpZih0bXAubHQoemVybykpIHRtcCA9IHRtcC5hZGQobi5hYnMoKSk7XG4gIGlmKHIubHQoemVybykpIHIgPSByLmFkZChuLmFicygpKTtcbiAgaWYodG1wLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG4gIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbn1cblxuLy9leHRlcm5hbCBwZXJmZWN0X3Bvd2VyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9wb3dlclxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X251bWJpdHMsIG1sX3pfcm9vdCwgbWxfel9wb3dcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9wb3dlcih6KSB7XG4gIC8vIFJldHVybiB0cnVlIGlmIG9wIGlzIGEgcGVyZmVjdCBwb3dlciwgaS5lLiwgaWYgdGhlcmUgZXhpc3QgaW50ZWdlcnMgYSBhbmRcbiAgLy8gYiwgd2l0aCBiID4gMSwgc3VjaCB0aGF0IG9wID0gYV5iLlxuICAvLyBPdGhlcndpc2UgZmFsc2UuXG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpIHx8IHouZXF1YWxzKG9uZS5uZWdhdGUoKSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICB2YXIgbG9nMnogPSBtbF96X251bWJpdHMoei5hYnMoKSk7XG4gIGZvciAodmFyIGIgPSAyOyBiIDw9IGxvZzJ6OyBiKyspIHtcbiAgICBpZih6Lmx0KHplcm8pICYmIGIgJSAyID09IDApIGNvbnRpbnVlO1xuICAgIHZhciB6cCA9IHouYWJzKCk7XG4gICAgdmFyIHAgPSBiaWdJbnQobWxfel9yb290KHpwLCBiKSk7XG4gICAgaWYoei5sdCh6ZXJvKSkgcCA9IHAubmVnYXRlKCk7XG4gICAgdmFyIHIgPSBiaWdJbnQobWxfel9wb3cocCwgYikpO1xuICAgIGlmICh6LmVxdWFscyhyKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3Rfc3F1YXJlOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9zcXVhcmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290XG5mdW5jdGlvbiBtbF96X3BlcmZlY3Rfc3F1YXJlKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgaWYgKHoubHQoYmlnSW50KDApKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciByb290ID0gYmlnSW50KG1sX3pfcm9vdCh6LCAyKSk7XG4gIGlmIChyb290Lm11bHRpcGx5KHJvb3QpLmVxKHopKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfTtcbn1cblxuLy9leHRlcm5hbCBwcm9iYWJfcHJpbWU6IHQgLT4gaW50IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wcm9iYWJfcHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9wcm9iYWJfcHJpbWUoeiwgaSkge1xuICBpZiAoYmlnSW50KHopLmlzUHJvYmFibGVQcmltZShpKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgbmV4dHByaW1lOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmV4dHByaW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25leHRwcmltZSh6MSkge1xuICAvLyBJbnRlcmVzdGluZ2x5LCB0aGUgemFyaXRoIG5leHRfcHJpbWUgb25seSByZXR1cm5zIFxuICAvLyBwcm9iYWJhbGlzdGljIHByaW1lcy4gIFdlIGRvIHRoZSBzYW1lLCB3aXRoIHRoZSBcbiAgLy8gc2FtZSBwcm9iYWJsaXN0aWMgcGFyYW1ldGVyIG9mIDI1LlxuICAvLyBodHRwczovL2Zvc3NpZXMub3JnL2RveC9nbXAtNi4xLjIvbXB6XzJuZXh0cHJpbWVfOGNfc291cmNlLmh0bWxcbiAgXG4gIHoxID0gYmlnSW50KHoxKVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIGlmICh6MS5sdChvbmUpIHx8IHoxLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICBpZiAoejEuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICB6MSA9IHoxLmFkZCh0d28pO1xuICB9IGVsc2Uge1xuICAgIHoxID0gejEuYWRkKG9uZSk7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoejEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6MSA9IHoxLmFkZCh0d28pXG4gICAgfVxuICB9XG59XG5cbi8vZXh0ZXJuYWwgZXh0cmFjdDogdCAtPiBpbnQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZXh0cmFjdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9leHRyYWN0KHoxLCBwb3MsIGxlbikge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MS5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgyKS5wb3cobGVuKS5zdWJ0cmFjdCgxKSkpO1xufVxuXG4vL2V4dGVybmFsIGdjZGV4dF9pbnRlcm46IHQgLT4gdCAtPiAodCAqIHQgKiBib29sKVxuLy9Qcm92aWRlczogbWxfel9nY2RleHRfaW50ZXJuXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZGV4dF9pbnRlcm4oejEsIHoyKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB2YXIgZ2NkID0gYmlnSW50LmdjZCh6MSx6Mik7XG4gIHZhciBhID0gejE7XG4gIHZhciBiID0gejI7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICB2YXIgbGFzdHggPSBiaWdJbnQoMSk7XG4gIHZhciB5ID0gYmlnSW50KDEpO1xuICB2YXIgbGFzdHkgPSBiaWdJbnQoMSk7XG4gIHZhciBxLCB0LCByO1xuICBpZih6MS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB3aGlsZSghYi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIHEgPSBhLmRpdmlkZShiKTtcbiAgICByID0gYS5zdWJ0cmFjdChxLm11bHRpcGx5KGIpKTtcbiAgICB0ID0geDtcbiAgICB4ID0gbGFzdHguc3VidHJhY3QocS5tdWx0aXBseSh4KSk7XG4gICAgbGFzdHggPSB0O1xuICAgIHQgPSB5O1xuICAgIHkgPSBsYXN0eS5zdWJ0cmFjdChxLm11bHRpcGx5KHkpKTtcbiAgICBsYXN0eSA9IHQ7XG4gICAgYSA9IGI7XG4gICAgYiA9IHI7XG4gIH1cbiAgaWYoYS5sdChiaWdJbnQoMCkpKVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhLm5lZ2F0ZSgpKSxtbF96X25vcm1hbGl6ZShsYXN0eC5uZWdhdGUoKSksMV1cbiAgZWxzZVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhKSxtbF96X25vcm1hbGl6ZShsYXN0eCksMV1cbn1cblxuLy9leHRlcm5hbCBzcXJ0OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3FydFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9zcXJ0KHoxKSB7XG4gIHZhciB6ID0gYmlnSW50KHoxKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0OiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9yb290KHosIDIpO1xufVxuXG4vL2V4dGVybmFsIHNxcnRfcmVtOiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfc3FydF9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NxcnRfcmVtKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0X3JlbTogc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgdmFyIG11bCA9IHJvb3QubXVsdGlwbHkocm9vdCk7XG4gIHZhciBkaWZmID0gei5zdWJ0cmFjdChtdWwpO1xuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKHJvb3QpLCBtbF96X25vcm1hbGl6ZShkaWZmKV1cbn1cblxuLy9leHRlcm5hbCB0cmFpbGluZ196ZXJvczogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdHJhaWxpbmdfemVyb3MgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90cmFpbGluZ196ZXJvcyh6KSB7XG4gIHogPSBiaWdJbnQoeikuYWJzKCk7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5lcXVhbHMoemVybykpIHtcbiAgICAvLyBtYXhfaW50IGluIDMyYml0XG4gICAgcmV0dXJuIDB4N2ZmZmZmZmY7XG4gIH1cbiAgdmFyIGkgPSAwXG4gIHogPSB6Lnhvcih6LnByZXYoKSkuc2hpZnRSaWdodCgxKTtcbiAgZm9yIChpID0gMDsgIXouZXF1YWxzKGJpZ0ludC56ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouc2hpZnRSaWdodCgxKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cblxuLy9leHRlcm5hbCBwb3Bjb3VudDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfcG9wY291bnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9wb3Bjb3VudCh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoemVybyk7IGkrKykge1xuICAgIHogPSB6LmFuZCh6LnByZXYoKSk7XG4gIH1cbiAgaWYoaSAhPSAoaXwwKSkgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBpfDA7XG59XG5cbi8vZXh0ZXJuYWwgaGFtZGlzdDogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYW1kaXN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcG9wY291bnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9oYW1kaXN0KHoxLCB6Mikge1xuICBpZihiaWdJbnQoejEpLmlzTmVnYXRpdmUoKSAhPSBiaWdJbnQoejIpLmlzTmVnYXRpdmUgKCkpe1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIGlmKCh6MSAhPSAoejEgfCAwKSB8fCB6MiAhPSAoejIgfCAwKSkgJiYgKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpIHx8IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSkpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouaGFtZGlzdDogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3BvcGNvdW50KGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBzaXplOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaXplIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2l6ZSh6MSkge1xuICAvLyBDbGFpbSB0byBiZSBhIDMyLWJpdCBhcmNoaXRlY3R1cmUuXG4gIHJldHVybiBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKS52YWx1ZS5sZW5ndGg7XG59XG5cbi8vZXh0ZXJuYWwgZGl2ZXhhY3Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2RpdmV4YWN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2XG5mdW5jdGlvbiBtbF96X2RpdmV4YWN0KHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3phcml0aF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIGNhbWxfemFyaXRoX21hcnNoYWwod3JpdGVyLCB2LCBzeikge1xuICB2ID0gYmlnSW50KHYpO1xuICB2YXIgYml0cyA9IHYudG9BcnJheShNYXRoLnBvdygyLCAzMikpO1xuICB3cml0ZXIud3JpdGUoOCwgYml0cy5pc05lZ2F0aXZlID8xIDogMCk7XG4gIHZhciBibG9jayA9IGJpdHMudmFsdWUubGVuZ3RoO1xuICB2YXIgbGVuID0gYmxvY2sgKiA0O1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IGJsb2NrIC0gMTsgaSA+PSAwOyBpIC0tKXtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDAgKSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gOCApICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAxNikgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDI0KSAmIDB4ZmYpO1xuICB9XG4gIHN6WzBdID0gNCAqICgxICsgKCgobGVuICsgMykgLyA0KSB8IDApKTtcbiAgc3pbMV0gPSA4ICogKDEgKyAoKChsZW4gKyA3KSAvIDgpIHwgMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3phcml0aF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGNhbWxfemFyaXRoX3VubWFyc2hhbChyZWFkZXIsIHN6KSB7XG4gIHZhciBuZWdhdGU7XG4gIHN3aXRjaChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTogbmVnYXRlID0gdHJ1ZTsgYnJlYWs7XG4gIGNhc2UgMDogbmVnYXRlID0gZmFsc2U7IGJyZWFrO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHogKG1hbGZvcm1lZCBpbnB1dClcIik7XG4gIH1cbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuIC8gNDsgaSsrKXtcbiAgICB2YXIgeSA9IGJpZ0ludChyZWFkZXIucmVhZDh1KCkpO1xuICAgIHkgPSB5LmFkZCgocmVhZGVyLnJlYWQ4dSgpKSA8PCA4KTtcbiAgICB5ID0geS5hZGQoKHJlYWRlci5yZWFkOHUoKSkgPDwgMTYpO1xuICAgIHkgPSB5LmFkZCgoKHJlYWRlci5yZWFkOHUoKSkgPDwgMjQpID4+PiAwKTtcbiAgICB4ID0geS5zaGlmdExlZnQoaSAqIDMyKS5hZGQoeCk7XG4gIH1cbiAgaWYobmVnYXRlKSB4ID0geC5uZWdhdGUoKTtcbiAgc3pbMF0gPSBsZW4gKyA0O1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoeClcbn1cblxuLy9Qcm92aWRlczogbWxfel9kaXZpc2libGVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9kaXZpc2libGUoYSwgYil7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBpZihhLmVxdWFscyh6ZXJvKSAmJiBiLmVxdWFscyh6ZXJvKSkgcmV0dXJuIDE7XG4gIHJldHVybiBhLmlzRGl2aXNpYmxlQnkoYik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2NvbmdydWVudFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2NvbmdydWVudChhLGIsYyl7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBjID0gYmlnSW50KGMpO1xuICBpZihjLmVxdWFscyh6ZXJvKSAmJiBhLmVxdWFscyhiKSkgcmV0dXJuIDE7XG4gIHJldHVybiBhLm1pbnVzKGIpLmlzRGl2aXNpYmxlQnkoYykgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogbWxfel9yZW1vdmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIG1sX3pfcmVtb3ZlKGEsYil7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBpZihiLmVxdWFscyh6ZXJvKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICBpZihhLmVxdWFscyh6ZXJvKSB8fCBiLmFicygpLmVxdWFscyhvbmUpKSByZXR1cm4gWzAsIGEsIDBdO1xuICB2YXIgaSA9IDA7XG4gIHdoaWxlKGEuaXNEaXZpc2libGVCeShiKSl7XG4gICAgYSA9IGEuZGl2aWRlKGIpO1xuICAgIGkrKztcbiAgfVxuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKGEpLCBpXTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWNcbi8vUmVxdWlyZXM6IG1sX3pfZmFjTSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2ZhYyhpKXtcbiAgaWYoaTw9MCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5mYWN0OiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIHJldHVybiBtbF96X2ZhY00oaSwxKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWMyXG4vL1JlcXVpcmVzOiBtbF96X2ZhY00sIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9mYWMyKGkpe1xuICBpZihpPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3QyOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIHJldHVybiBtbF96X2ZhY00oaSwyKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWNNXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZmFjTShpLCBtKXtcbiAgaWYoaTw9MHx8bTw9MCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5mYWN0TTogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBtID0gYmlnSW50KG0pO1xuICB2YXIgY3VycmVudCA9IGJpZ0ludChpKTtcbiAgdmFyIHJlcyA9IGJpZ0ludCgxKTtcbiAgd2hpbGUoY3VycmVudC5pc1Bvc2l0aXZlKCkpe1xuICAgIHJlcyA9IHJlcy5tdWx0aXBseShjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5taW51cyhtKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocmVzKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9maWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemUsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maWIoaSl7XG4gIGlmKGkgPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZpYjogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBpZihpID09IDAgfHwgaSA9PSAxKSByZXR1cm4gaTtcbiAgdmFyIGEgPSBiaWdJbnQoMCksIGIgPSBiaWdJbnQoMSk7XG4gIGZvcih2YXIgayA9IDE7IGsgPCBpOyBrKyspe1xuICAgIHZhciBiMiA9IGI7XG4gICAgYiA9IGEuYWRkKGIpO1xuICAgIGEgPSBiMjtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfbHVjbnVtXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplLCBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbHVjbnVtKGkpe1xuICBpZihpIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5sdWNudW06IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgaWYoaSA9PSAwKSByZXR1cm4gMjtcbiAgaWYoaSA9PSAxKSByZXR1cm4gMTtcbiAgdmFyIGEgPSBiaWdJbnQoMiksIGIgPSBiaWdJbnQoMSk7XG4gIGZvcih2YXIgayA9IDE7IGsgPCBpOyBrKyspe1xuICAgIHZhciBiMiA9IGI7XG4gICAgYiA9IGEuYWRkKGIpO1xuICAgIGEgPSBiMjtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfamFjb2JpXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9qYWNvYmkobiwgayl7XG4gIG4gPSBiaWdJbnQobik7XG4gIGsgPSBiaWdJbnQoayk7XG4gIC8vYXNzZXJ0KGsgPiAwIGFuZCBrICUgMiA9PSAxKVxuICBpZihrLmxlcShiaWdJbnQoMCkpIHx8IGsubW9kKGJpZ0ludCgyKSkubmVxKGJpZ0ludCgxKSkpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5qYWNvYmk6IHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBldmVuXCIpO1xuICBuID0gbi5tb2Qoayk7XG4gIGlmKG4ubHQoYmlnSW50KDApKSkgbiA9IG4uYWRkKGspO1xuICB2YXIgdCA9IDE7XG4gIHdoaWxlICghIG4uZXF1YWxzKGJpZ0ludCgwKSkpe1xuICAgIHdoaWxlIChuLmlzRGl2aXNpYmxlQnkoYmlnSW50KDIpKSkge1xuICAgICAgbiA9IG4uZGl2aWRlKGJpZ0ludCgyKSlcbiAgICAgIHZhciByID0gay5tb2QoYmlnSW50KDgpKVxuICAgICAgaWYgKHIuZXF1YWxzKGJpZ0ludCgzKSkgfHwgci5lcXVhbHMoYmlnSW50KDUpKSl7XG4gICAgICAgIHQgPSAtdFxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbjEgPSBuLCBrMSA9IGs7XG4gICAgbiA9IGsxO1xuICAgIGsgPSBuMTtcbiAgICBpZiAobi5tb2QoYmlnSW50KDQpKS5lcXVhbHMoYmlnSW50KDMpKSAmJiAgay5tb2QoYmlnSW50KDQpKS5lcXVhbHMoYmlnSW50KDMpKSkge1xuICAgICAgdCA9IC10XG4gICAgfVxuICAgIG4gPSBuLm1vZChrKVxuICB9XG4gIGlmKGsuZXF1YWxzKGJpZ0ludCgxKSkpXG4gICAgcmV0dXJuIHRcbiAgZWxzZVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfbGVnZW5kcmVcbi8vUmVxdWlyZXM6IG1sX3pfamFjb2JpXG5mdW5jdGlvbiBtbF96X2xlZ2VuZHJlKGEsYil7XG4gIHJldHVybiBtbF96X2phY29iaShhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2tyb25lY2tlclxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gbWxfel9rcm9uZWNrZXIobixrKXtcbiAgY2FtbF9mYWlsd2l0aChcIm1sX3pfa3JvbmVja2VyIGlzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9wcmltb3JpYWxcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJpbW9yaWFsKGEpe1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuICB2YXIgejEgPSBvbmU7XG4gIHZhciByZXMgPSBvbmU7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIHdoaWxlICh6MS5sZXEoYSkpIHtcbiAgICBpZiAoejEuaXNQcm9iYWJsZVByaW1lKDI1KSkge1xuICAgICAgcmVzID0gcmVzLm11bHRpcGx5KHoxKTtcbiAgICB9XG4gICAgaWYoejEuZXF1YWxzKG9uZSkgfHwgejEuZXF1YWxzKHR3bykpIHoxID0gejEuYWRkKG9uZSk7XG4gICAgZWxzZSB6MSA9IHoxLmFkZCh0d28pXG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHJlcyk7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfYmluXG4vL1JlcXVpcmVzOiBtbF96X25vcm1hbGl6ZSwgYmlnSW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfYmluKG4sIGspe1xuICB2YXIgbiA9IGJpZ0ludChuKTtcbiAgdmFyIGsgPSBiaWdJbnQoayk7XG4gIHZhciBjb2VmZiA9IGJpZ0ludCgxKTtcbiAgZm9yICh2YXIgeCA9IG4ubWludXMoaykuYWRkKGJpZ0ludCgxKSk7IHgubGVxKG4pOyB4ID0geC5hZGQoYmlnSW50KDEpKSkgY29lZmYgPSBjb2VmZi5tdWx0aXBseSh4KTtcbiAgZm9yICh4ID0gYmlnSW50KDEpOyB4LmxlcShrKTsgeCA9IHguYWRkKGJpZ0ludCgxKSkpIGNvZWZmID0gY29lZmYuZGl2aWRlKHgpO1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoY29lZmYpO1xuXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gZy5GbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gZy5GbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gZy5JbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gZy5VaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IGcuSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBnLlVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIga2luZDtcbiAgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGYoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczoganNfcHJpbnRfc3Rkb3V0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3Rkb3V0KHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICAmJiB2LmxvZyAmJiB2LmxvZyhzKTtcbiAgfVxufVxuLy9Qcm92aWRlczoganNfcHJpbnRfc3RkZXJyIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3RkZXJyKHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3RkZXJyLndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICYmIHYuZXJyb3IgJiYgdi5lcnJvcihzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgIHJldHVybiBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gIHJldHVybiBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBqc19wcmludF9zdGRlcnIoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIFt1bmRlZmluZWRdKTtcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihuID09IGFyaXR5ICYmIGYubGVuZ3RoID09IGFyaXR5KSByZXR1cm4gZi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixhcmdzKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgLy8gdmFyIF90YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgLy8gdmFyIF90YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgc3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZSBjb25zdFxuLy9EdW1teSBmdW5jdGlvbiFcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZSgpIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSArdikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICBnbG9iYWxUaGlzLm5hdmlnYXRvcj9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGdsb2JhbFRoaXMuY29uc29sZT9nbG9iYWxUaGlzLmNvbnNvbGU6e307XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYodHlwZW9mIGcuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJLCBidXQgd2l0aG91dCB0aGUgd2VhayBzZW1hbnRpY3NcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXQoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgcmV0dXJuICh4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdPT09dW5kZWZpbmVkKT8wOnhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRfY29weVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldCxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXRfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX3dlYWtfZ2V0KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NoZWNrIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY2hlY2soeCwgaSkge1xuICBpZih4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0hPT11bmRlZmluZWQgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldICE9PTApXG4gICAgcmV0dXJuIDE7XG4gIGVsc2VcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxudmFyIGNhbWxfZXBoZV9jcmVhdGUgPSBjYW1sX3dlYWtfY3JlYXRlXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2JsaXRcbnZhciBjYW1sX2VwaGVfYmxpdF9rZXkgPSBjYW1sX3dlYWtfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldFxudmFyIGNhbWxfZXBoZV9nZXRfa2V5ID0gY2FtbF93ZWFrX2dldFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbnZhciBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5ID0gY2FtbF93ZWFrX2dldF9jb3B5XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jaGVja1xudmFyIGNhbWxfZXBoZV9jaGVja19rZXkgPSBjYW1sX3dlYWtfY2hlY2tcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgWzAsIHZdKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgMClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgZHN0W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9hcnJheSxjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLGxlbil7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgY2hhbl9sZW4gPSBjaGFuLmZpbGUubGVuZ3RoKCk7XG4gIGlmKGxlbjwwKSBsZW4gPSBjaGFuX2xlbiAtIGNoYW4ub2Zmc2V0O1xuICBpZihjaGFuLm9mZnNldCArIGxlbiA+IGNoYW5fbGVuKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuICByZXR1cm4gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ1ZiksMCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbnZhciBjYW1sX21kNV9ieXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIGZ1bmN0aW9uIG1kNShidWZmZXIsIGxlbmd0aCkge1xuICAgIHZhciBpID0gbGVuZ3RoO1xuICAgIGJ1ZmZlcltpID4+IDJdIHw9IDB4ODAgPDwgKDggKiAoaSAmIDMpKTtcbiAgICBmb3IgKGkgPSAoaSAmIH4weDMpICsgODsoaSAmIDB4M0YpIDwgNjAgO2kgKz0gNClcbiAgICAgIGJ1ZmZlclsoaSA+PiAyKSAtIDFdID0gMDtcbiAgICBidWZmZXJbKGkgPj4gMikgLTFdID0gbGVuZ3RoIDw8IDM7XG4gICAgYnVmZmVyW2kgPj4gMl0gPSAobGVuZ3RoID4+IDI5KSAmIDB4MUZGRkZGRkY7XG5cbiAgICB2YXIgdyA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XTtcblxuICAgIGZvcihpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgKz0gMTYpIHtcbiAgICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IG5ldyBBcnJheSgxNik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgICAgdFtpICogNCArIGpdID0gKHdbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzLCBvZnMsIGxlbikge1xuICAgIC8vIEZJWDogbWF5YmUgd2Ugc2hvdWxkIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uIGJ5IGNodW5rIG9mIDY0IGJ5dGVzXG4gICAgLy8gYXMgaW4gaHR0cDovL3d3dy5teWVyc2RhaWx5Lm9yZy9qb3NlcGgvamF2YXNjcmlwdC9tZDUuanNcbiAgICB2YXIgYnVmID0gW107XG4gICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpe1xuICAgICAgdmFyIGIgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPVxuICAgICAgICAgIGIuY2hhckNvZGVBdChqKSB8IChiLmNoYXJDb2RlQXQoaisxKSA8PCA4KSB8XG4gICAgICAgICAgKGIuY2hhckNvZGVBdChqKzIpIDw8IDE2KSB8IChiLmNoYXJDb2RlQXQoaiszKSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYi5jaGFyQ29kZUF0KGkgKyBvZnMpIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgIHZhciBhID0gY29udGVudDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKz00KSB7XG4gICAgICAgIHZhciBqID0gaSArIG9mcztcbiAgICAgICAgYnVmW2k+PjJdID0gYVtqXSB8IChhW2orMV0gPDwgOCkgfCAoYVtqKzJdIDw8IDE2KSB8IChhW2orM10gPDwgMjQpO1xuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYnVmW2k+PjJdIHw9IGFbaSArIG9mc10gPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KG1kNShidWYsIGxlbikpO1xuICB9XG59ICgpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG4iLCIvL1RoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQgaW4gQ3N0cnVjdFxuLy9UaGVyZSBhcmUganVzdCBwcm92aWRlZCBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pbmVcbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdC4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgICAgIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAgICAgY29uc3RydWN0b3IgXiAoZmllbGRzIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nID0gbGF6eShSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID0gcmVmIHRlbXBfZGlyX25hbWVcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBjdXJyZW50X3RlbXBfZGlyX25hbWUgOj0gc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgICAgICAgICAgICAgICAgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9XG4gICgqIFdhdGNoIG91dCBmb3Igb3ZlcmZsb3cgaW4gY29tcHV0aW5nIHJlXjIgKyBpbV4yICopXG4gIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICBpZiByID0gMC4wIHRoZW4gaVxuICBlbHNlIGlmIGkgPSAwLjAgdGhlbiByXG4gIGVsc2UgaWYgciA+PSBpIHRoZW5cbiAgICBsZXQgcSA9IGkgLy4gciBpbiByICouIHNxcnQoMS4wICsuIHEgKi4gcSlcbiAgZWxzZVxuICAgIGxldCBxID0gciAvLiBpIGluIGkgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENhbWxpbnRlcm5hbEF0b21pYyBpcyBhIGRlcGVuZGVuY3kgb2YgU3RkbGliLCBzbyBpdCBpcyBjb21waWxlZCB3aXRoXG4gICAtbm9wZXJ2YXNpdmVzLiAqKVxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFdlIGFyZSBub3QgcmV1c2luZyAoJ2EgcmVmKSBkaXJlY3RseSB0byBtYWtlIGl0IGVhc2llciB0byByZWFzb25cbiAgIGFib3V0IGF0b21pY2l0eSBpZiB3ZSB3aXNoIHRvOiBldmVuIGluIGEgc2VxdWVudGlhbCBpbXBsZW1lbnRhdGlvbixcbiAgIHNpZ25hbHMgYW5kIG90aGVyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MgbWlnaHQgYnJlYWsgYXRvbWljaXR5LiAqKVxudHlwZSAnYSB0ID0ge211dGFibGUgdjogJ2F9XG5cbmxldCBtYWtlIHYgPSB7dn1cbmxldCBnZXQgciA9IHIudlxubGV0IHNldCByIHYgPSByLnYgPC0gdlxuXG4oKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgc2V0IHRvIG5ldmVyIGJlIGlubGluZWQ6IEZsYW1iZGEgaXNcbiAgIGFsbG93ZWQgdG8gbW92ZSBzdXJyb3VuZGluZyBjb2RlIGluc2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbixcbiAgIGluY2x1ZGluZyBhbGxvY2F0aW9ucy4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGV4Y2hhbmdlIHIgdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSB2O1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXRbQGlubGluZSBuZXZlcl0gY29tcGFyZV9hbmRfc2V0IHIgc2VlbiB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgaWYgY3VyID09IHNlZW4gdGhlbiAoXG4gICAgci52IDwtIHY7XG4gICAgKCogRU5EIEFUT01JQyAqKVxuICAgIHRydWVcbiAgKSBlbHNlXG4gICAgZmFsc2VcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2FuZF9hZGQgciBuID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIChjdXIgKyBuKTtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gIGxldCBtb2R1bGUgQXRvbWljID0gQ2FtbGludGVybmFsQXRvbWljIGluXG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gQXRvbWljLm1ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2F0X2V4aXQgKCkgPSAoQ2FtbGludGVybmFsQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBuYWtlZF9wb2ludGVyc19jaGVja2VkIDogdW5pdCAtPiBib29sXG4gID0gXCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkXCJcbmxldCAoKSA9IGlmIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgKCkgdGhlbiBhdF9leGl0IG1ham9yXG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgID0gQ29tcGxleFxubW9kdWxlIERpZ2VzdCAgICAgICA9IERpZ2VzdFxubW9kdWxlIEVpdGhlciAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgPSBHY1xubW9kdWxlIEdlbmxleCAgICAgICA9IEdlbmxleFxubW9kdWxlIEhhc2h0YmwgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQZXJ2YXNpdmVzICAgPSBQZXJ2YXNpdmVzXG5tb2R1bGUgUHJpbnRleGMgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VxICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJlYW0gICAgICAgPSBTdHJlYW1cbm1vZHVsZSBTdHJpbmcgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEphbmUgU3RyZWV0IEdyb3VwIExMQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBAZGVwcmVjYXRlZCBVc2UgeyFTdGRsaWJ9ICopXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxubGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbmxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG5leGNlcHRpb24gRXhpdFxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgbWluID0gbWluXG5sZXQgbWF4ID0gbWF4XG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAoJiYpIGluc3RlYWQuXCJdXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKHx8KSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxubGV0IGFicyA9IGFic1xubGV0IG1heF9pbnQgPSBtYXhfaW50XG5sZXQgbWluX2ludCA9IG1pbl9pbnRcbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG5vdCA9IGxub3RcbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5sZXQgaW5maW5pdHkgPSBpbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IG5lZ19pbmZpbml0eVxubGV0IG5hbiA9IG5hblxubGV0IG1heF9mbG9hdCA9IG1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IG1pbl9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBlcHNpbG9uX2Zsb2F0XG50eXBlIG5vbnJlYyBmcGNsYXNzID0gZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxubGV0ICggXiApID0gKCBeIClcbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgPSBjaGFyX29mX2ludFxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5sZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc3RyaW5nID0gYm9vbF9vZl9zdHJpbmdcbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBib29sX29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgaW50X29mX3N0cmluZ19vcHQgPSBpbnRfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9mbG9hdCA9IHN0cmluZ19vZl9mbG9hdFxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5sZXQgKCBAICkgID0gKCBAIClcbnR5cGUgbm9ucmVjIGluX2NoYW5uZWwgPSBpbl9jaGFubmVsXG50eXBlIG5vbnJlYyBvdXRfY2hhbm5lbCA9IG91dF9jaGFubmVsXG5sZXQgc3RkaW4gPSBzdGRpblxubGV0IHN0ZG91dCA9IHN0ZG91dFxubGV0IHN0ZGVyciA9IHN0ZGVyclxubGV0IHByaW50X2NoYXIgPSBwcmludF9jaGFyXG5sZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfYnl0ZXMgPSBwcmludF9ieXRlc1xubGV0IHByaW50X2ludCA9IHByaW50X2ludFxubGV0IHByaW50X2Zsb2F0ID0gcHJpbnRfZmxvYXRcbmxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxubGV0IHByaW50X25ld2xpbmUgPSBwcmludF9uZXdsaW5lXG5sZXQgcHJlcnJfY2hhciA9IHByZXJyX2NoYXJcbmxldCBwcmVycl9zdHJpbmcgPSBwcmVycl9zdHJpbmdcbmxldCBwcmVycl9ieXRlcyA9IHByZXJyX2J5dGVzXG5sZXQgcHJlcnJfaW50ID0gcHJlcnJfaW50XG5sZXQgcHJlcnJfZmxvYXQgPSBwcmVycl9mbG9hdFxubGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5sZXQgcHJlcnJfbmV3bGluZSA9IHByZXJyX25ld2xpbmVcbmxldCByZWFkX2xpbmUgPSByZWFkX2xpbmVcbmxldCByZWFkX2ludCA9IHJlYWRfaW50XG5sZXQgcmVhZF9pbnRfb3B0ID0gcmVhZF9pbnRfb3B0XG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXRcbmxldCByZWFkX2Zsb2F0X29wdCA9IHJlYWRfZmxvYXRfb3B0XG50eXBlIG5vbnJlYyBvcGVuX2ZsYWcgPSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5sZXQgb3Blbl9vdXQgPSBvcGVuX291dFxubGV0IG9wZW5fb3V0X2JpbiA9IG9wZW5fb3V0X2JpblxubGV0IG9wZW5fb3V0X2dlbiA9IG9wZW5fb3V0X2dlblxubGV0IGZsdXNoID0gZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBmbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IG91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X3N0cmluZyA9IG91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBvdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBvdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gb3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9ieXRlID0gb3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IG91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X3ZhbHVlID0gb3V0cHV0X3ZhbHVlXG5sZXQgc2Vla19vdXQgPSBzZWVrX291dFxubGV0IHBvc19vdXQgPSBwb3Nfb3V0XG5sZXQgb3V0X2NoYW5uZWxfbGVuZ3RoID0gb3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2Vfb3V0ID0gY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfb3V0X25vZXJyID0gY2xvc2Vfb3V0X25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBvcGVuX2luID0gb3Blbl9pblxubGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9iaW5cbmxldCBvcGVuX2luX2dlbiA9IG9wZW5faW5fZ2VuXG5sZXQgaW5wdXRfY2hhciA9IGlucHV0X2NoYXJcbmxldCBpbnB1dF9saW5lID0gaW5wdXRfbGluZVxubGV0IGlucHV0ID0gaW5wdXRcbmxldCByZWFsbHlfaW5wdXQgPSByZWFsbHlfaW5wdXRcbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nID0gcmVhbGx5X2lucHV0X3N0cmluZ1xubGV0IGlucHV0X2J5dGUgPSBpbnB1dF9ieXRlXG5sZXQgaW5wdXRfYmluYXJ5X2ludCA9IGlucHV0X2JpbmFyeV9pbnRcbmxldCBpbnB1dF92YWx1ZSA9IGlucHV0X3ZhbHVlXG5sZXQgc2Vla19pbiA9IHNlZWtfaW5cbmxldCBwb3NfaW4gPSBwb3NfaW5cbmxldCBpbl9jaGFubmVsX2xlbmd0aCA9IGluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2VfaW4gPSBjbG9zZV9pblxubGV0IGNsb3NlX2luX25vZXJyID0gY2xvc2VfaW5fbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfaW4gPSBzZXRfYmluYXJ5X21vZGVfaW5cbm1vZHVsZSBMYXJnZUZpbGUgPSBMYXJnZUZpbGVcbnR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcbnR5cGUgbm9ucmVjICgnYSwnYikgcmVzdWx0ID0gKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcbmxldCBzdHJpbmdfb2ZfZm9ybWF0ID0gc3RyaW5nX29mX2Zvcm1hdFxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxubGV0ICggXl4gKSA9ICggXl4gKVxubGV0IGV4aXQgPSBleGl0XG5sZXQgYXRfZXhpdCA9IGF0X2V4aXRcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSA9IHZhbGlkX2Zsb2F0X2xleGVtXG5sZXQgZG9fYXRfZXhpdCA9IGRvX2F0X2V4aXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+IGludCAtPiBmbG9hdCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICBUaGlzIGlzIGEgbGFnZ2VkLUZpYm9uYWNjaSBGKDU1LCAyNCwgKykgd2l0aCBhIG1vZGlmaWVkIGFkZGl0aW9uXG4gICBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSBtaXhpbmcgb2YgYml0cy5cbiAgIElmIHdlIHVzZSBub3JtYWwgYWRkaXRpb24sIHRoZSBsb3ctb3JkZXIgYml0IGZhaWxzIHRlc3RzIDEgYW5kIDdcbiAgIG9mIHRoZSBEaWVoYXJkIHRlc3Qgc3VpdGUsIGFuZCBiaXRzIDEgYW5kIDIgYWxzbyBmYWlsIHRlc3QgNy5cbiAgIElmIHdlIHVzZSBtdWx0aXBsaWNhdGlvbiBhcyBzdWdnZXN0ZWQgYnkgTWFyc2FnbGlhLCBpdCBkb2Vzbid0IGZhcmVcbiAgIG11Y2ggYmV0dGVyLlxuICAgQnkgbWl4aW5nIHRoZSBiaXRzIG9mIG9uZSBvZiB0aGUgbnVtYmVycyBiZWZvcmUgYWRkaXRpb24gKFhPUiB0aGVcbiAgIDUgaGlnaC1vcmRlciBiaXRzIGludG8gdGhlIGxvdy1vcmRlciBiaXRzKSwgd2UgZ2V0IGEgZ2VuZXJhdG9yIHRoYXRcbiAgIHBhc3NlcyBhbGwgdGhlIERpZWhhcmQgdGVzdHMuXG4qKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID0geyBzdCA6IGludCBhcnJheTsgbXV0YWJsZSBpZHggOiBpbnQgfVxuXG4gIGxldCBuZXdfc3RhdGUgKCkgPSB7IHN0ID0gQXJyYXkubWFrZSA1NSAwOyBpZHggPSAwIH1cbiAgbGV0IGFzc2lnbiBzdDEgc3QyID1cbiAgICBBcnJheS5ibGl0IHN0Mi5zdCAwIHN0MS5zdCAwIDU1O1xuICAgIHN0MS5pZHggPC0gc3QyLmlkeFxuXG5cbiAgbGV0IGZ1bGxfaW5pdCBzIHNlZWQgPVxuICAgIGxldCBjb21iaW5lIGFjY3UgeCA9IERpZ2VzdC5zdHJpbmcgKGFjY3UgXiBJbnQudG9fc3RyaW5nIHgpIGluXG4gICAgbGV0IGV4dHJhY3QgZCA9XG4gICAgICBDaGFyLmNvZGUgZC5bMF0gKyAoQ2hhci5jb2RlIGQuWzFdIGxzbCA4KSArIChDaGFyLmNvZGUgZC5bMl0gbHNsIDE2KVxuICAgICAgKyAoQ2hhci5jb2RlIGQuWzNdIGxzbCAyNClcbiAgICBpblxuICAgIGxldCBzZWVkID0gaWYgQXJyYXkubGVuZ3RoIHNlZWQgPSAwIHRoZW4gW3wgMCB8XSBlbHNlIHNlZWQgaW5cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0IGRvXG4gICAgICBzLnN0LihpKSA8LSBpO1xuICAgIGRvbmU7XG4gICAgbGV0IGFjY3UgPSByZWYgXCJ4XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgKyBJbnQubWF4IDU1IGwgZG9cbiAgICAgIGxldCBqID0gaSBtb2QgNTUgaW5cbiAgICAgIGxldCBrID0gaSBtb2QgbCBpblxuICAgICAgYWNjdSA6PSBjb21iaW5lICFhY2N1IHNlZWQuKGspO1xuICAgICAgcy5zdC4oaikgPC0gKHMuc3QuKGopIGx4b3IgZXh0cmFjdCAhYWNjdSkgbGFuZCAweDNGRkZGRkZGOyAgKCogUFIjNTU3NSAqKVxuICAgIGRvbmU7XG4gICAgcy5pZHggPC0gMFxuXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGZ1bGxfaW5pdCByZXN1bHQgc2VlZDtcbiAgICByZXN1bHRcblxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9IG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBhc3NpZ24gcmVzdWx0IHM7XG4gICAgcmVzdWx0XG5cblxuICAoKiBSZXR1cm5zIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBzLmlkeCA8LSAocy5pZHggKyAxKSBtb2QgNTU7XG4gICAgbGV0IGN1cnZhbCA9IHMuc3QuKHMuaWR4KSBpblxuICAgIGxldCBuZXd2YWwgPSBzLnN0Ligocy5pZHggKyAyNCkgbW9kIDU1KVxuICAgICAgICAgICAgICAgICArIChjdXJ2YWwgbHhvciAoKGN1cnZhbCBsc3IgMjUpIGxhbmQgMHgxRikpIGluXG4gICAgbGV0IG5ld3ZhbDMwID0gbmV3dmFsIGxhbmQgMHgzRkZGRkZGRiBpbiAgKCogUFIjNTU3NSAqKVxuICAgIHMuc3QuKHMuaWR4KSA8LSBuZXd2YWwzMDtcbiAgICBuZXd2YWwzMFxuXG5cbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IG1heF9pbnRfMzIgPSAoMSBsc2wgMzApICsgMHgzRkZGRkZGRiBpbiAoKiAweDdGRkZGRkZGICopXG4gICAgbGV0IGIxID0gYml0cyBzIGluXG4gICAgbGV0IGIyID0gYml0cyBzIGluXG4gICAgbGV0IChyLCBtYXhfaW50KSA9XG4gICAgICBpZiBuIDw9IG1heF9pbnRfMzIgdGhlblxuICAgICAgICAoKiAzMSByYW5kb20gYml0cyBvbiBib3RoIDY0LWJpdCBPQ2FtbCBhbmQgSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDE1IGJpdHMgb2YgYjEgYW5kIDE2IGJpdHMgb2YgYjIuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKChiMiBsYW5kIDB4M0ZGRkMwMDApIGxzbCAxKSBsb3IgKGIxIGxzciAxNSkpXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnRfMzIpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiMyA9IGJpdHMgcyBpblxuICAgICAgICAoKiA2MiByYW5kb20gYml0cyBvbiA2NC1iaXQgT0NhbWw7IHVucmVhY2hhYmxlIG9uIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAyMCBiaXRzIG9mIGIxIGFuZCAyMSBiaXRzIG9mIGIyIGFuZCBiMy4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKChiMyBsYW5kIDB4M0ZGRkZFMDApIGxzbCAxMikgbG9yIChiMiBsc3IgOSkpIGxzbCAyMClcbiAgICAgICAgICAgIGxvciAoYjEgbHNyIDEwKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50KVxuICAgIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDMyLm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCAoYml0cyBzIGxhbmQgMSkpIDMwIGluXG4gICAgbGV0IHIgPSBJbnQzMi5sb2dvciBiMSBiMiBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLnN1YiByIHYgPiBJbnQzMi5hZGQgKEludDMyLnN1YiBJbnQzMi5tYXhfaW50IG4pIDFsXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQ2NC5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcykpIDMwIGluXG4gICAgbGV0IGIzID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMgbGFuZCA3KSkgNjAgaW5cbiAgICBsZXQgciA9IEludDY0LmxvZ29yIGIxIChJbnQ2NC5sb2dvciBiMiBiMykgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC5zdWIgciB2ID4gSW50NjQuYWRkIChJbnQ2NC5zdWIgSW50NjQubWF4X2ludCBuKSAxTFxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cblxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cblxuICAoKiBSZXR1cm5zIGEgZmxvYXQgMCA8PSB4IDw9IDEgd2l0aCBhdCBtb3N0IDYwIGJpdHMgb2YgcHJlY2lzaW9uLiAqKVxuICBsZXQgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IHNjYWxlID0gMTA3Mzc0MTgyNC4wICAoKiAyXjMwICopXG4gICAgYW5kIHIxID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgYW5kIHIyID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgaW4gKHIxIC8uIHNjYWxlICsuIHIyKSAvLiBzY2FsZVxuXG5cbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgbGV0IGJvb2wgcyA9IChiaXRzIHMgbGFuZCAxID0gMClcblxuICBsZXQgYml0czMyIHMgPVxuICAgIGxldCBiMSA9IEludDMyLihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDE0KSBpbiAgKCogMTYgYml0cyAqKVxuICAgIGxldCBiMiA9IEludDMyLihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDE0KSBpbiAgKCogMTYgYml0cyAqKVxuICAgIEludDMyLihsb2dvciBiMSAoc2hpZnRfbGVmdCBiMiAxNikpXG5cbiAgbGV0IGJpdHM2NCBzID1cbiAgICBsZXQgYjEgPSBJbnQ2NC4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSA5KSBpbiAgKCogMjEgYml0cyAqKVxuICAgIGxldCBiMiA9IEludDY0LihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDkpIGluICAoKiAyMSBiaXRzICopXG4gICAgbGV0IGIzID0gSW50NjQuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgOCkgaW4gICgqIDIyIGJpdHMgKilcbiAgICBJbnQ2NC4obG9nb3IgYjEgKGxvZ29yIChzaGlmdF9sZWZ0IGIyIDIxKSAoc2hpZnRfbGVmdCBiMyA0MikpKVxuXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuZW5kXG5cbigqIFRoaXMgaXMgdGhlIHN0YXRlIHlvdSBnZXQgd2l0aCBbaW5pdCAyNzE4MjgxOF0gYW5kIHRoZW4gYXBwbHlpbmdcbiAgIHRoZSBcImxhbmQgMHgzRkZGRkZGRlwiIGZpbHRlciB0byB0aGVtLiAgU2VlICM1NTc1LCAjNTc5MywgIzU5NzcuICopXG5sZXQgZGVmYXVsdCA9IHtcbiAgU3RhdGUuc3QgPSBbfFxuICAgICAgMHgzYWUyNTIyYjsgMHgxZDhkNDYzNDsgMHgxNWI0ZmFkMDsgMHgxOGIxNGFjZTsgMHgxMmY4YTNjNDsgMHgzYjA4NmM0NztcbiAgICAgIDB4MTZkNDY3ZDY7IDB4MTAxZDkxYzc7IDB4MzIxZGYxNzc7IDB4MDE3NmMxOTM7IDB4MWZmNzJiZjE7IDB4MWU4ODkxMDk7XG4gICAgICAweDBiNDY0YjE4OyAweDJiODZiOTdjOyAweDA4OTFkYTQ4OyAweDAzMTM3NDYzOyAweDA4NWFjNWExOyAweDE1ZDYxZjJmO1xuICAgICAgMHgzYmNlZDM1OTsgMHgyOWMxYzEzMjsgMHgzYTg2NzY2ZTsgMHgzNjZkOGM4NjsgMHgxZjViNjIyMjsgMHgzY2UxYjU5ZjtcbiAgICAgIDB4MmViZjc4ZTE7IDB4MjdjZDFiODY7IDB4MjU4ZjNkYzM7IDB4Mzg5YTgxOTQ7IDB4MDJlNGM0NGM7IDB4MThjNDNmN2Q7XG4gICAgICAweDBmNmU1MzRmOyAweDFlN2RmMzU5OyAweDA1NWQwYjdlOyAweDEwZTg0ZTdlOyAweDEyNjE5OGU0OyAweDBlNzcyMmNiO1xuICAgICAgMHgxY2JlZGUyODsgMHgzMzkxYjk2NDsgMHgzZDQwZTkyYTsgMHgwYzU5OTMzZDsgMHgwYjhjZDBiNzsgMHgyNGVmZmYxYztcbiAgICAgIDB4MjgwM2ZkYWE7IDB4MDhlYmM3MmU7IDB4MGY1MjJlMzI7IDB4MDUzOThlZGM7IDB4MjE0NGEwNGM7IDB4MGFlZjNjYmQ7XG4gICAgICAweDAxYWQ0NzE5OyAweDM1YjkzY2Q2OyAweDJhNTU5ZDRmOyAweDFlNmZkNzY4OyAweDI2ZTI3ZjM2OyAweDE4NmYxOGMzO1xuICAgICAgMHgyZmJmOTY3YTtcbiAgICB8XTtcbiAgU3RhdGUuaWR4ID0gMDtcbn1cblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIGRlZmF1bHRcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgZGVmYXVsdCBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgZGVmYXVsdCBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCBkZWZhdWx0IGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCBkZWZhdWx0IHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgZGVmYXVsdFxubGV0IGJpdHMzMiAoKSA9IFN0YXRlLmJpdHMzMiBkZWZhdWx0XG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IGRlZmF1bHRcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbl9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9pbl9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9pblxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5faW5fZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgaWMgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2VfaW5fbm9lcnIgaWMpXG4gICAgKGZ1biAoKSAtPiBmIGljKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW5fYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luIHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2VfaW5fbm9lcnJcblxubGV0IGlucHV0X2NoYXIgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gIHwgYyAtPiBTb21lIGNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfYnl0ZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9ieXRlIGljIHdpdGhcbiAgfCBuIC0+IFNvbWUgblxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9saW5lIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0ID0gU3RkbGliLmlucHV0XG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2V0X3RhZyA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3NldF90YWdcIlxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG5sZXQgcmFpc2VfdW5kZWZpbmVkID0gT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBVbmRlZmluZWQpXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6IE9iai50IC0+IE9iai50IC0+IHVuaXQgPSBcImNhbWxfb2JqX21ha2VfZm9yd2FyZFwiXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJhaXNlIGVcblxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfdmFsX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICByZXN1bHRcblxuXG4oKiBbZm9yY2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXMgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmVcbiAgIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0cyBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsXG4gICBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxuXG5sZXQgZm9yY2UgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0cyB0YWcgY291bGQgaGF2ZVxuICAgICAgIGNoYW5nZWQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSlcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfbGF6eV9ibG9jayBsenZcblxuXG5sZXQgZm9yY2VfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcblxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cblxubGV0IGZvcmNlX3ZhbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfdmFsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBsYXp5X2Zyb21fZnVuID0gZnJvbV9mdW5cblxubGV0IGxhenlfZnJvbV92YWwgPSBmcm9tX3ZhbFxuXG5sZXQgbGF6eV9pc192YWwgPSBpc192YWxcblxuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGxhenlfZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGZvbGRfbGVmdCBmIGFjYyBuZXh0XG5cbmxldCByZWMgaXRlciBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgaXRlciBmIG5leHRcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcblxubGV0IGlzX2VtcHR5IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoXywgXykgLT5cbiAgICAgIGZhbHNlXG5cbmxldCB1bmNvbnMgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIFNvbWUgKHgsIHhzKVxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuXG5cblxubGV0IHJlYyBsZW5ndGhfYXV4IGFjY3UgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxlbmd0aF9hdXggKGFjY3UgKyAxKSB4c1xuXG5sZXRbQGlubGluZV0gbGVuZ3RoIHhzID1cbiAgbGVuZ3RoX2F1eCAwIHhzXG5cbmxldCByZWMgaXRlcmlfYXV4IGYgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGYgaSB4O1xuICAgICAgaXRlcmlfYXV4IGYgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGl0ZXJpIGYgeHMgPVxuICBpdGVyaV9hdXggZiAwIHhzXG5cbmxldCByZWMgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGkgeCBpblxuICAgICAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBmb2xkX2xlZnRpIGYgYWNjdSB4cyA9XG4gIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAwIHhzXG5cbmxldCByZWMgZm9yX2FsbCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggJiYgZm9yX2FsbCBwIHhzXG5cbmxldCByZWMgZXhpc3RzIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggfHwgZXhpc3RzIHAgeHNcblxubGV0IHJlYyBmaW5kIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmQgcCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBDYW1saW50ZXJuYWxBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJ1xuICB8ICdcXDE5MicgLi4gJ1xcMjE0J1xuICB8ICdcXDIxNicgLi4gJ1xcMjIyJyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6J1xuICB8ICdcXDIyNCcgLi4gJ1xcMjQ2J1xuICB8ICdcXDI0OCcgLi4gJ1xcMjU0JyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VlZGluZ1xuICAgdGhlIGVycm9yaW5nIGJ5dGUuXG5cbiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsaWVudCB1c2VzIGRlY29kZXMgd2l0aG91dCBjYXJpbmcgYWJvdXRcbiAgIHZhbGlkaXR5IGl0IG5hdHVyYWxseSByZXBsYWNlIGJvZ3VzIGRhdGEgd2l0aCBVY2hhci5yZXAgYWNjb3JkaW5nXG4gICB0byB0aGUgV0hBVFdHIEVuY29kaW5nIHN0YW5kYXJkLiBPdGhlciBzY2hlbWVzIGFyZSBwb3NzaWJsZSBieVxuICAgY29uc3VsdGluZyB0aGUgbnVtYmVyIG9mIHVzZWQgYnl0ZXMgb24gaW52YWxpZCBkZWNvZGVzLiBGb3IgbW9yZVxuICAgZGV0YWlscyBzZWUgaHR0cHM6Ly9oc2l2b25lbi5maS9icm9rZW4tdXRmLTgvXG5cbiAgIEZvciB0aGlzIHJlYXNvbiBpbiBbZ2V0X3V0Zl84X3VjaGFyXSB3ZSBncmFkdWFsbHkgY2hlY2sgdGhlIG5leHRcbiAgIGJ5dGUgaXMgYXZhaWxhYmxlIHJhdGhlciB0aGFuIGRvaW5nIGl0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxuICAgZmlyc3QgYnl0ZS4gQ29udHJhc3Qgd2l0aCBbaXNfdmFsaWRfdXRmXzhdLiAqKVxuXG4oKiBVVEYtOCAqKVxuXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194QkYgYiA9IGIgbHNyIDYgPD4gMGIxMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94QTBfdG9feEJGIGIgPSBiIGxzciA1IDw+IDBiMTAxXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OUYgYiA9IGIgbHNyIDUgPD4gMGIxMDBcbmxldFtAaW5saW5lXSBub3RfaW5feDkwX3RvX3hCRiBiID0gYiA8IDB4OTAgfHwgMHhCRiA8IGJcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g4RiBiID0gYiBsc3IgNCA8PiAweDhcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzIgYjAgYjEgPVxuICAoKGIwIGxhbmQgMHgxRikgbHNsIDYpIGxvclxuICAoKGIxIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8zIGIwIGIxIGIyID1cbiAgKChiMCBsYW5kIDB4MEYpIGxzbCAxMikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMgPVxuICAoKGIwIGxhbmQgMHgwNykgbHNsIDE4KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCAxMikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjMgbGFuZCAweDNGKSlcblxubGV0IGdldF91dGZfOF91Y2hhciBiIGkgPVxuICBsZXQgYjAgPSBnZXRfdWludDggYiBpIGluICgqIHJhaXNlcyBpZiBbaV0gaXMgbm90IGEgdmFsaWQgaW5kZXguICopXG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIGIwIHdpdGggKCogU2VlIFRoZSBVbmljb2RlIFN0YW5kYXJkLCBUYWJsZSAzLjcgKilcbiAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gZGVjX3JldCAxIGIwXG4gIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGRlY19yZXQgMiAodXRmXzhfdWNoYXJfMiBiMCBiMSlcbiAgfCAnXFx4RTAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3hBMF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RUQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OUYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhGMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDkwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OEYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgXyAtPiBkZWNfaW52YWxpZCAxXG5cbmxldCBzZXRfdXRmXzhfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgICBzZXRfdWludDggYiBpIHU7XG4gICAgICAxXG4gIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhDMCBsb3IgKHUgbHNyIDYpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAyKVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RTAgbG9yICh1IGxzciAxMikpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMylcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RjAgbG9yICh1IGxzciAxOCkpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIChpICsgMikgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgNClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzggYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgKGdldCBiIGkpIHdpdGhcbiAgICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBsb29wIG1heCBiIChpICsgMSlcbiAgICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94QTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFRCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDlGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g5MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g4RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkJFICopXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2YmVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkxFICopXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2bGVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIGNlbGwgb3B0aW9uXG5hbmQgJ2EgY2VsbCA9IHsgbXV0YWJsZSBjb3VudCA6IGludDsgbXV0YWJsZSBkYXRhIDogJ2EgZGF0YSB9XG5hbmQgJ2EgZGF0YSA9XG4gICAgU2VtcHR5XG4gIHwgU2NvbnMgb2YgJ2EgKiAnYSBkYXRhXG4gIHwgU2FwcCBvZiAnYSBkYXRhICogJ2EgZGF0YVxuICB8IFNsYXp5IG9mICdhIGRhdGEgTGF6eS50XG4gIHwgU2dlbiBvZiAnYSBnZW5cbiAgfCBTYnVmZmlvIDogYnVmZmlvIC0+IGNoYXIgZGF0YVxuYW5kICdhIGdlbiA9IHsgbXV0YWJsZSBjdXJyIDogJ2Egb3B0aW9uIG9wdGlvbjsgZnVuYyA6IGludCAtPiAnYSBvcHRpb24gfVxuYW5kIGJ1ZmZpbyA9XG4gIHsgaWMgOiBpbl9jaGFubmVsOyBidWZmIDogYnl0ZXM7IG11dGFibGUgbGVuIDogaW50OyBtdXRhYmxlIGluZCA6IGludCB9XG5cbmV4Y2VwdGlvbiBGYWlsdXJlXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBjb3VudCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSB7IGNvdW50IH0gLT4gY291bnRcbmxldCBkYXRhID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFNlbXB0eVxuICB8IFNvbWUgeyBkYXRhIH0gLT4gZGF0YVxuXG5sZXQgZmlsbF9idWZmIGIgPVxuICBiLmxlbiA8LSBpbnB1dCBiLmljIGIuYnVmZiAwIChCeXRlcy5sZW5ndGggYi5idWZmKTsgYi5pbmQgPC0gMFxuXG5cbmxldCByZWMgZ2V0X2RhdGEgOiB0eXBlIHYuIGludCAtPiB2IGRhdGEgLT4gdiBkYXRhID0gZnVuIGNvdW50IGQgLT4gbWF0Y2ggZCB3aXRoXG4gKCogUmV0dXJucyBlaXRoZXIgU2VtcHR5IG9yIFNjb25zKGEsIF8pIGV2ZW4gd2hlbiBkIGlzIGEgZ2VuZXJhdG9yXG4gICAgb3IgYSBidWZmZXIuIEluIHRob3NlIGNhc2VzLCB0aGUgaXRlbSBhIGlzIHNlZW4gYXMgZXh0cmFjdGVkIGZyb21cbiB0aGUgZ2VuZXJhdG9yL2J1ZmZlci5cbiBUaGUgY291bnQgcGFyYW1ldGVyIGlzIHVzZWQgZm9yIGNhbGxpbmcgYFNnZW4tZnVuY3Rpb25zJy4gICopXG4gICBTZW1wdHkgfCBTY29ucyAoXywgXykgLT4gZFxuIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBjb3VudCBkMSB3aXRoXG4gICAgICAgU2NvbnMgKGEsIGQxMSkgLT4gU2NvbnMgKGEsIFNhcHAgKGQxMSwgZDIpKVxuICAgICB8IFNlbXB0eSAtPiBnZXRfZGF0YSBjb3VudCBkMlxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2dlbiB7Y3VyciA9IFNvbWUgTm9uZX0gLT4gU2VtcHR5XG4gfCBTZ2VuICh7Y3VyciA9IFNvbWUoU29tZSBhKX0gYXMgZykgLT5cbiAgICAgZy5jdXJyIDwtIE5vbmU7IFNjb25zKGEsIGQpXG4gfCBTZ2VuIGcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZy5mdW5jIGNvdW50IHdpdGhcbiAgICAgICBOb25lIC0+IGcuY3VyciA8LSBTb21lKE5vbmUpOyBTZW1wdHlcbiAgICAgfCBTb21lIGEgLT4gU2NvbnMoYSwgZClcbiAgICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICBlbmRcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gU2VtcHR5IGVsc2VcbiAgICAgICBsZXQgciA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kIGluXG4gICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgICAgYi5pbmQgPC0gc3VjYyBiLmluZDsgU2NvbnMociwgZClcbiB8IFNsYXp5IGYgLT4gZ2V0X2RhdGEgY291bnQgKExhenkuZm9yY2UgZilcblxuXG5sZXQgcmVjIHBlZWtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHYgb3B0aW9uID0gZnVuIHMgLT5cbiAoKiBjb25zdWx0IHRoZSBmaXJzdCBpdGVtIG9mIHMgKilcbiBtYXRjaCBzLmRhdGEgd2l0aFxuICAgU2VtcHR5IC0+IE5vbmVcbiB8IFNjb25zIChhLCBfKSAtPiBTb21lIGFcbiB8IFNhcHAgKF8sIF8pIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIHMuY291bnQgcy5kYXRhIHdpdGhcbiAgICAgICBTY29ucyhhLCBfKSBhcyBkIC0+IHMuZGF0YSA8LSBkOyBTb21lIGFcbiAgICAgfCBTZW1wdHkgLT4gTm9uZVxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2xhenkgZiAtPiBzLmRhdGEgPC0gKExhenkuZm9yY2UgZik7IHBlZWtfZGF0YSBzXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBhfSAtPiBhXG4gfCBTZ2VuIGcgLT4gbGV0IHggPSBnLmZ1bmMgcy5jb3VudCBpbiBnLmN1cnIgPC0gU29tZSB4OyB4XG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIGJlZ2luIHMuZGF0YSA8LSBTZW1wdHk7IE5vbmUgZW5kXG4gICAgIGVsc2UgU29tZSAoQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQpXG5cblxubGV0IHBlZWsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgcyAtPiBwZWVrX2RhdGEgc1xuXG5cbmxldCByZWMganVua19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdW5pdCA9IGZ1biBzIC0+XG4gIG1hdGNoIHMuZGF0YSB3aXRoXG4gICAgU2NvbnMgKF8sIGQpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IHMuZGF0YSA8LSBkXG4gIHwgU2dlbiAoe2N1cnIgPSBTb21lIF99IGFzIGcpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGcuY3VyciA8LSBOb25lXG4gIHwgU2J1ZmZpbyBiIC0+XG4gICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIHMuZGF0YSA8LSBTZW1wdHlcbiAgICAgIGVsc2UgKHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGIuaW5kIDwtIHN1Y2MgYi5pbmQpXG4gIHwgXyAtPlxuICAgICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgICBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiBqdW5rX2RhdGEgc1xuXG5cbmxldCBqdW5rID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkYXRhIC0+IGp1bmtfZGF0YSBkYXRhXG5cbmxldCByZWMgbmdldF9kYXRhIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuIFtdLCBzLmRhdGEsIDBcbiAgZWxzZVxuICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgIFNvbWUgYSAtPlxuICAgICAgICBqdW5rX2RhdGEgcztcbiAgICAgICAgbGV0IChhbCwgZCwgaykgPSBuZ2V0X2RhdGEgKHByZWQgbikgcyBpbiBhIDo6IGFsLCBTY29ucyAoYSwgZCksIHN1Y2Mga1xuICAgIHwgTm9uZSAtPiBbXSwgcy5kYXRhLCAwXG5cblxubGV0IG5wZWVrX2RhdGEgbiBzID1cbiAgbGV0IChhbCwgZCwgbGVuKSA9IG5nZXRfZGF0YSBuIHMgaW5cbiAgcy5jb3VudCA8LSAocy5jb3VudCAtIGxlbik7XG4gIHMuZGF0YSA8LSBkO1xuICBhbFxuXG5cbmxldCBucGVlayBuID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBkIC0+IG5wZWVrX2RhdGEgbiBkXG5cbmxldCBuZXh0IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgYSAtPiBqdW5rIHM7IGFcbiAgfCBOb25lIC0+IHJhaXNlIEZhaWx1cmVcblxuXG5sZXQgZW1wdHkgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBfIC0+IHJhaXNlIEZhaWx1cmVcbiAgfCBOb25lIC0+ICgpXG5cblxubGV0IGl0ZXIgZiBzdHJtID1cbiAgbGV0IHJlYyBkb19yZWMgKCkgPVxuICAgIG1hdGNoIHBlZWsgc3RybSB3aXRoXG4gICAgICBTb21lIGEgLT4ganVuayBzdHJtOyBpZ25vcmUoZiBhKTsgZG9fcmVjICgpXG4gICAgfCBOb25lIC0+ICgpXG4gIGluXG4gIGRvX3JlYyAoKVxuXG5cbigqIFN0cmVhbSBidWlsZGluZyBmdW5jdGlvbnMgKilcblxubGV0IGZyb20gZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNnZW4ge2N1cnIgPSBOb25lOyBmdW5jID0gZn19XG5cbmxldCBvZl9saXN0IGwgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biB4IGwgLT4gU2NvbnMgKHgsIGwpKSBsIFNlbXB0eX1cblxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgICgqIFdlIGNhbm5vdCB1c2UgdGhlIGluZGV4IHBhc3NlZCBieSB0aGUgW2Zyb21dIGZ1bmN0aW9uIGRpcmVjdGx5XG4gICAgICAgYmVjYXVzZSBpdCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmVhbSBjb3VudCwgd2l0aCBhYnNvbHV0ZWx5IG5vXG4gICAgICAgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBzdGFydCBmcm9tIDAuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZVxuICAgICAgIG9mIFtTdHJlYW0uaWNvbnMgJ2MnIChTdHJlYW0uZnJvbV9zdHJpbmcgXCJhYlwiKV0sIHRoZSBmaXJzdFxuICAgICAgIGFjY2VzcyB0byB0aGUgc3RyaW5nIHdpbGwgYmUgbWFkZSB3aXRoIGNvdW50IFsxXSBhbHJlYWR5LlxuICAgICopXG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSBzLltjXSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2J5dGVzIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IEJ5dGVzLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSAoQnl0ZXMuZ2V0IHMgYykpXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9jaGFubmVsIGljID1cbiAgU29tZSB7Y291bnQgPSAwO1xuICAgICAgICBkYXRhID0gU2J1ZmZpbyB7aWMgPSBpYzsgYnVmZiA9IEJ5dGVzLmNyZWF0ZSA0MDk2OyBsZW4gPSAwOyBpbmQgPSAwfX1cblxuXG4oKiBTdHJlYW0gZXhwcmVzc2lvbnMgYnVpbGRlcnMgKilcblxubGV0IGlhcHAgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2FwcCAoZGF0YSBpLCBkYXRhIHMpfVxubGV0IGljb25zIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBkYXRhIHMpfVxubGV0IGlzaW5nIGkgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgU2VtcHR5KX1cblxubGV0IGxhcHAgZiBzID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2FwcCAoZGF0YSAoZiAoKSksIGRhdGEgcykpKX1cblxubGV0IGxjb25zIGYgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBkYXRhIHMpKSl9XG5sZXQgbHNpbmcgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBTZW1wdHkpKSl9XG5cbmxldCBzZW1wdHkgPSBOb25lXG5sZXQgc2xhenkgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KGRhdGEgKGYgKCkpKSl9XG5cbigqIEZvciBkZWJ1Z2dpbmcgdXNlICopXG5cbmxldCByZWMgZHVtcCA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiB0IC0+IHVuaXQgPSBmdW4gZiBzIC0+XG4gIHByaW50X3N0cmluZyBcIntjb3VudCA9IFwiO1xuICBwcmludF9pbnQgKGNvdW50IHMpO1xuICBwcmludF9zdHJpbmcgXCI7IGRhdGEgPSBcIjtcbiAgZHVtcF9kYXRhIGYgKGRhdGEgcyk7XG4gIHByaW50X3N0cmluZyBcIn1cIjtcbiAgcHJpbnRfbmV3bGluZSAoKVxuYW5kIGR1bXBfZGF0YSA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiBkYXRhIC0+IHVuaXQgPSBmdW4gZiAtPlxuICBmdW5jdGlvblxuICAgIFNlbXB0eSAtPiBwcmludF9zdHJpbmcgXCJTZW1wdHlcIlxuICB8IFNjb25zIChhLCBkKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2NvbnMgKFwiO1xuICAgICAgZiBhO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQ7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTYXBwIChcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQxO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQyO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2xhenkgXyAtPiBwcmludF9zdHJpbmcgXCJTbGF6eVwiXG4gIHwgU2dlbiBfIC0+IHByaW50X3N0cmluZyBcIlNnZW5cIlxuICB8IFNidWZmaW8gXyAtPiBwcmludF9zdHJpbmcgXCJTYnVmZmlvXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbnR5cGUgdCA9XG4ge211dGFibGUgYnVmZmVyIDogYnl0ZXM7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5sZW5ndGhdXG4gICAtIFtiLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlcl1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7YnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdCBzcmMuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBiLnBvc2l0aW9uIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCeXRlcy5sZW5ndGggYi5idWZmZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuYnVmZmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IubGVuZ3RoXS5cblxuICAgSW4gcGFydGljdWxhciwgYWZ0ZXIgW3Jlc2l6ZSBiIG1vcmVdIGlzIGNhbGxlZCwgYSBkaXJlY3QgYWNjZXNzIG9mXG4gICBzaXplIFttb3JlXSBhdCBbYi5wb3NpdGlvbl0gd2lsbCBhbHdheXMgYmUgaW4tYm91bmRzLCBzbyB0aGF0XG4gICAodW5zYWZlX3tnZXQsc2V0fSkgbWF5IGJlIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuO1xuICBhc3NlcnQgKGIucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgYXNzZXJ0IChvbGRfcG9zICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gICgpXG4gICgqIE5vdGU6IHRoZXJlIGFyZSB2YXJpb3VzIHNpdHVhdGlvbnMgKHByZWVtcHRpdmUgdGhyZWFkcywgc2lnbmFscyBhbmRcbiAgICAgZ2MgZmluYWxpemVycykgd2hlcmUgT0NhbWwgY29kZSBtYXkgYmUgcnVuIGFzeW5jaHJvbm91c2x5OyBpblxuICAgICBwYXJ0aWN1bGFyLCB0aGVyZSBtYXkgYmUgYSByYWNlIHdpdGggYW5vdGhlciB1c2VyIG9mIFtiXSwgY2hhbmdpbmdcbiAgICAgaXRzIG11dGFibGUgZmllbGRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIFtyZXNpemVdIGNhbGwuIFRoZSBCdWZmZXJcbiAgICAgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgYW55IGNvcnJlY3RuZXNzIGd1YXJhbnRlZSBpZiB0aGF0IGhhcHBlbnMsXG4gICAgIGJ1dCB3ZSBtdXN0IHN0aWxsIGVuc3VyZSB0aGF0IHRoZSBkYXRhc3RydWN0dXJlIGludmFyaWFudHMgaG9sZCBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAtLSBhcyB3ZSBwbGFuIHRvIHVzZSBbdW5zYWZlX3tnZXQsc2V0fV0uXG5cbiAgICAgVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgYWxsb2NhdGlvbiBwb2ludHMgaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgW3JlZl0gYW5kIFtCeXRlcy5jcmVhdGVdLCBidXQgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGZpZWxkc1xuICAgICBvZiBbYl0gaGFwcGVuIGJlZm9yZSBib3RoIG9mIHRoZW0gb3IgYWZ0ZXIgYm90aCBvZiB0aGVtLlxuXG4gICAgIFdlIHRoZXJlZm9yZSBhc3N1bWUgdGhhdCBbYi5wb3NpdGlvbl0gbWF5IGNoYW5nZSBhdCB0aGVzZSBhbGxvY2F0aW9ucyxcbiAgICAgYW5kIGNoZWNrIHRoYXQgdGhlIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gcG9zdGNvbmRpdGlvblxuICAgICBob2xkcyBmb3IgYm90aCB2YWx1ZXMgb2YgW2IucG9zaXRpb25dLCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uXG4gICAgIGlzIGNhbGxlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQgaWYgdGhlXG4gICAgIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdGx5LCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgYnVmZmVyIGludmFyaWFudHM6XG4gICAgIC0gW29sZChiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbbmV3KGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtvbGQoYi5sZW5ndGgpIDw9IG5ldyhiLmxlbmd0aCldXG5cbiAgICAgTm90ZTogW2IucG9zaXRpb24gKyBtb3JlIDw9IG9sZChiLmxlbmd0aCldIGRvZXMgKm5vdCpcbiAgICAgaG9sZCBpbiBnZW5lcmFsLCBhcyBpdCBpcyBwcmVjaXNlbHkgdGhlIGNhc2Ugd2hlcmUgeW91IG5lZWRcbiAgICAgdG8gY2FsbCBbcmVzaXplXSB0byBpbmNyZWFzZSBbYi5sZW5ndGhdLlxuXG4gICAgIE5vdGU6IFthc3NlcnRdIGFib3ZlIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBrbm93IHRoZSBjb25kaXRpb25zXG4gICAgIGFsd2F5cyBob2xkLCBidXQgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IHJldHVybiBjb3JyZWN0bHlcbiAgICAgb25seSBpZiB0aGV5IGhvbGQuXG5cbiAgICAgTm90ZTogdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBuZWVkXG4gICAgIHRvIGJlIGNoZWNrZWQgd2l0aCB0aGlzIGxldmVsIG9mIHNjcnV0aW55LCBnaXZlbiB0aGF0IHRoZXlcbiAgICAgcmVhZC93cml0ZSB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIHRoYXRcbiAgICAgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkIG9yIGNhbGxpbmcgW3Jlc2l6ZV0uXG4gICopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAoKiBUaGUgYXNzZXJ0aW9uIGJlbG93IG1heSBmYWlsIGluIHdlaXJkIHNjZW5hcmlvIHdoZXJlXG4gICAgIHRocmVhZGVkL2ZpbmFsaXplciBjb2RlLCBydW4gYXN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZVxuICAgICBbcmVhbGx5X2lucHV0X3VwX3RvXSBjYWxsLCByYWNlcyBvbiB0aGUgYnVmZmVyOyB3ZSBkb24ndCBlbnN1cmVcbiAgICAgY29ycmVjdG5lc3MgaW4gdGhpcyBjYXNlLCBidXQgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAoc2VlIGRpc2N1c3Npb24gb2YgW3Jlc2l6ZV0pLiAqKVxuICBhc3NlcnQgKGIucG9zaXRpb24gKyBuIDw9IGIubGVuZ3RoKTtcbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgdW5zYWZlX3NldF9pbnQ4IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICB1bnNhZmVfc2V0X2ludDE2IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICB1bnNhZmVfc2V0X2ludDMyIGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA4O1xuICB1bnNhZmVfc2V0X2ludDY0IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgdmVyYm9zZSA6IGludDtcbiAgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuZXh0ZXJuYWwgZ2V0X2J1Y2tldCA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2J1Y2tldFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBnZXRfY3JlZGl0IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2NyZWRpdFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBodWdlX2ZhbGxiYWNrX2NvdW50IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFwiXG5leHRlcm5hbCBldmVudGxvZ19wYXVzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19wYXVzZVwiXG5leHRlcm5hbCBldmVudGxvZ19yZXN1bWUgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcmVzdW1lXCJcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIHJlZlxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgIShhcmVjLmFjdGl2ZSkgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSByZWYgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gYSA6PSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIGJ1Y2tldHMgYmVjb21lIHRvbyBsb25nLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSByZWYgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSByYW5kb21pemVkIDo9IHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gIXJhbmRvbWl6ZWRcblxubGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXIgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9vcGVuX3RhZyBzdGF0ZSBzID0gcHBfb3Blbl9zdGFnIHN0YXRlIChTdHJpbmdfdGFnIHMpXG5sZXQgcHBfY2xvc2VfdGFnIHN0YXRlICgpID0gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPSBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCA9IHBwX29wZW5faGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl92Ym94ID0gcHBfb3Blbl92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2h2Ym94ID0gcHBfb3Blbl9odmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ob3Zib3ggPSBwcF9vcGVuX2hvdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ib3ggPSBwcF9vcGVuX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfYm94ID0gcHBfY2xvc2VfYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3RhZyA9IHBwX29wZW5fdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90YWcgPSBwcF9jbG9zZV90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fc3RhZyA9IHBwX29wZW5fc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2Vfc3RhZyA9IHBwX2Nsb3NlX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2FzID0gcHBfcHJpbnRfYXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3N0cmluZyA9IHBwX3ByaW50X3N0cmluZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnl0ZXMgPSBwcF9wcmludF9ieXRlcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaW50ID0gcHBfcHJpbnRfaW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbG9hdCA9IHBwX3ByaW50X2Zsb2F0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jaGFyID0gcHBfcHJpbnRfY2hhciBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYm9vbCA9IHBwX3ByaW50X2Jvb2wgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2JyZWFrID0gcHBfcHJpbnRfYnJlYWsgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2N1dCA9IHBwX3ByaW50X2N1dCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3BhY2UgPSBwcF9wcmludF9zcGFjZSBzdGRfZm9ybWF0dGVyXG5hbmQgZm9yY2VfbmV3bGluZSA9IHBwX2ZvcmNlX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ZsdXNoID0gcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X25ld2xpbmUgPSBwcF9wcmludF9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pZl9uZXdsaW5lID0gcHBfcHJpbnRfaWZfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBvcGVuX3Rib3ggPSBwcF9vcGVuX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3Rib3ggPSBwcF9jbG9zZV90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YnJlYWsgPSBwcF9wcmludF90YnJlYWsgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X3RhYiA9IHBwX3NldF90YWIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RhYiA9IHBwX3ByaW50X3RhYiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWFyZ2luID0gcHBfc2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9pbmRlbnQgPSBwcF9zZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZ2VvbWV0cnkgPSBwcF9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5ID0gcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9nZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgdXBkYXRlX2dlb21ldHJ5ID0gcHBfdXBkYXRlX2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfYm94ZXMgPSBwcF9zZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2JveGVzID0gcHBfZ2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Zlcl9tYXhfYm94ZXMgPSBwcF9vdmVyX21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCA9IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCA9IHBwX2dldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3ByaW50X3RhZ3MgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X3ByaW50X3RhZ3MgPVxuICBwcF9nZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X21hcmtfdGFncyA9XG4gIHBwX3NldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJrX3RhZ3MgPVxuICBwcF9nZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfdGFncyA9XG4gIHBwX3NldF90YWdzIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV90YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZF9mb3JtYXR0ZXIgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIGVycl9mb3JtYXR0ZXIgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXIgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIGVycl9mb3JtYXR0ZXIgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbigqXG5cbiAgRGVwcmVjYXRlZCBzdHVmZi5cblxuKilcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGVcbiAgICB+b3V0OmYgfmZsdXNoOmcgfm5ld2xpbmU6aCB+c3BhY2VzOmkgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGlcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoLFxuICAgc3RhdGUucHBfb3V0X25ld2xpbmUsIHN0YXRlLnBwX291dF9zcGFjZXMpXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBlcnJvciBwcm9uZSBmdW5jdGlvbiwgZG8gbm90IHVzZSBpdC5cbiAgIFRoaXMgZnVuY3Rpb24gaXMgbmVpdGhlciBjb21wb3NpdGlvbmFsIG5vciBpbmNyZW1lbnRhbCwgc2luY2UgaXQgZmx1c2hlc1xuICAgdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGF0IGVhY2ggY2FsbC5cbiAgIFRvIGdldCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBkZWZpbmUgYSBmb3JtYXR0ZXIgb2YgeW91ciBvd24gd3JpdGluZyB0b1xuICAgdGhlIGJ1ZmZlciBhcmd1bWVudCwgYXMgaW5cbiAgIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJcbiAgIHRoZW4gdXNlIHshZnByaW50ZiBwcGZ9IGFzIHVzdWFsLiAqKVxubGV0IGJwcmludGYgYiAoRm9ybWF0IChmbXQsIF8pIDogKCdhLCBmb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdCkgPVxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9IG91dHB1dF9hY2MgcHBmIGFjYzsgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG4oKiBEZXByZWNhdGVkIDogYWxpYXMgZm9yIGtzcHJpbnRmLiAqKVxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuXG5cblxuKCogRGVwcmVjYXRlZCB0YWcgZnVuY3Rpb25zICopXG5cbnR5cGUgZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fdGFnIDogdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3RhZyA6IHRhZyAtPiB1bml0O1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl90YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3RhZyA9IHBjdDtcbiAgIH0gPVxuICBsZXQgc3RyaW5naWZ5IGYgZSA9IGZ1bmN0aW9uIFN0cmluZ190YWcgcyAtPiBmIHMgfCBfIC0+IGUgaW5cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBzdHJpbmdpZnkgbW90IFwiXCI7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBtY3QgXCJcIjtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gc3RyaW5naWZ5IHBvdCAoKTtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBwY3QgKClcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBmbXQgKCkgPVxuICBsZXQgZnVucyA9IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG4gIGxldCBtYXJrX29wZW5fdGFnIHMgPSBmdW5zLm1hcmtfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBtYXJrX2Nsb3NlX3RhZyBzID0gZnVucy5tYXJrX2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X29wZW5fdGFnIHMgPSBmdW5zLnByaW50X29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfY2xvc2VfdGFnIHMgPSBmdW5zLnByaW50X2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAge21hcmtfb3Blbl90YWc7IG1hcmtfY2xvc2VfdGFnOyBwcmludF9vcGVuX3RhZzsgcHJpbnRfY2xvc2VfdGFnfVxuXG5sZXQgc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBbc3RkaWJdIGlzIGVxdWl2YWxlbnQgdG8gW1NjYW5uaW5nLmZyb21fY2hhbm5lbCBTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBzdGRpYiA6IGluX2NoYW5uZWxcbiAgKCogQW4gYWxpYXMgZm9yIFtTY2FuZi5zdGRpbl0sIHRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tXG4gICAgIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuICB2YWwgbWVtb19mcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG4gICgqIE9ic29sZXRlLiAqKVxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGliXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG5cbiAgbGV0IHN0ZGliID0gc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5cbiAgKCpcbiAgICAgT2Jzb2xldGU6IGEgbWVtbyBbZnJvbV9jaGFubmVsXSB2ZXJzaW9uIHRvIGJ1aWxkIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdXG4gICAgIHNjYW5uaW5nIGJ1ZmZlciBvdXQgb2YgYSBbU3RkbGliLmluX2NoYW5uZWxdLlxuICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHRyeSB0byBwcmVzZXJ2ZSB0aGUgc2Nhbm5pbmdcbiAgICAgc2VtYW50aWNzIGZvciB0aGUgKG5vdyBvYnNvbGV0ZSkgZnVuY3Rpb24gW2ZzY2FuZl0uXG4gICAgIEdpdmVuIHRoYXQgYWxsIHNjYW5uZXIgbXVzdCByZWFkIGZyb20gYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gc2Nhbm5pbmdcbiAgICAgYnVmZmVyLCBbZnNjYW5mXSBtdXN0IHJlYWQgZnJvbSBvbmUhXG4gICAgIE1vcmUgcHJlY2lzZWx5LCBnaXZlbiBbaWNdLCBhbGwgc3VjY2Vzc2l2ZSBjYWxscyBbZnNjYW5mIGljXSBtdXN0IHJlYWRcbiAgICAgZnJvbSB0aGUgc2FtZSBzY2FubmluZyBidWZmZXIuXG4gICAgIFRoaXMgb2JsaWdlZCB0aGlzIGxpYnJhcnkgdG8gYWxsb2NhdGVkIHNjYW5uaW5nIGJ1ZmZlcnMgdGhhdCB3ZXJlXG4gICAgIG5vdCBwcm9wZXJseSBnYXJiYWdlIGNvbGxlY3RhYmxlLCBoZW5jZSBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcy5cbiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCBmcm9tIGEgW1N0ZGxpYi5pbl9jaGFubmVsXSBpbnB1dCBjaGFubmVsXG4gICAgIFtpY10sIHNpbXBseSBkZWZpbmUgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gZm9ybWF0dGVkIGlucHV0IGNoYW5uZWwgYXMgaW5cbiAgICAgW2xldCBpYiA9IFNjYW5uaW5nLmZyb21fY2hhbm5lbCBpY10sIHRoZW4gdXNlIFtTY2FuZi5ic2NhbmYgaWJdIGFzIHVzdWFsLlxuICAqKVxuICBsZXQgbWVtb19mcm9tX2ljID1cbiAgICBsZXQgbWVtbyA9IHJlZiBbXSBpblxuICAgIChmdW4gc2Nhbl9jbG9zZV9pYyBpYyAtPlxuICAgICB0cnkgTGlzdC5hc3NxIGljICFtZW1vIHdpdGhcbiAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICBsZXQgaWIgPVxuICAgICAgICAgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIChGcm9tX2NoYW5uZWwgaWMpIGljIGluXG4gICAgICAgbWVtbyA6PSAoaWMsIGliKSA6OiAhbWVtbztcbiAgICAgICBpYilcblxuXG4gICgqIE9ic29sZXRlOiBzZWUgeyFtZW1vX2Zyb21faWN9IGFib3ZlLiAqKVxuICBsZXQgbWVtb19mcm9tX2NoYW5uZWwgPSBtZW1vX2Zyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG50eXBlICdhIGtzY2FuZl9yZXN1bHQgPSBBcmdzIG9mICdhIHwgRXhjIG9mIGV4blxuXG5sZXQga3NjYW5mIGliIGVmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIHRyeSBBcmdzIChtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKSB3aXRoXG4gICAgICB8IChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlKSBhcyBleGMgLT4gRXhjIGV4Y1xuICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHdpdGhcbiAgICAgIHwgQXJncyBhcmdzIC0+IGFwcGx5IGYgYXJnc1xuICAgICAgfCBFeGMgZXhjIC0+IGVmIGliIGV4Y1xuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG5cblxuKCogRGVwcmVjYXRlZCAqKVxubGV0IGtmc2NhbmYgaWMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIGVmIGZtdFxubGV0IGZzY2FuZiBpYyBmbXQgPSBrc2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBzY2FuZl9iYWRfaW5wdXQgZm10XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl0gKCogaWdub3JlIGRlcHJlY2F0aW9uIHdhcm5pbmcgYWJvdXQgbW9kdWxlIFN0cmVhbSAqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgZ2V0X2tleTogJ2EgY29udGFpbmVyIC0+IHQgb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFpdGVyfSwgeyFmb2xkfSwgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgaXRlciBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZFxuICAgICAgICAgICAgZW5kOyBkb19idWNrZXQgcmVzdCBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgZm9sZCBmIGggaW5pdCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgICAgICBtYXRjaCBiIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICAgYWNjdVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkIGFjY3VcbiAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3QgYWNjdSAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgICBkb25lO1xuICAgICAgIWFjY3VcblxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBmIGsgZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kIC0+XG4gICAgICAgICAgICAgICAgICAgIEguc2V0X2tleV9kYXRhIGMgayBuZXdfZDtcbiAgICAgICAgICAgICAgICAgICAgQ29ucyhoaywgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHRvX3NlcSB0YmwgPVxuICAgICAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAgICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gICAgICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAgICAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgICAgIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgICAgIHwgQ29ucyAoXywgYywgbmV4dCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCBpIG5leHQgKClcbiAgICAgICAgICAgICAgfCBTb21lIGtleSwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBhdXggMCBFbXB0eVxuXG4gICAgbGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAodDI6KCdrLCdkKSB0KTogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazFfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGsxX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXkgayBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkgZSB3aXRoXG4gICAgICB8IFNvbWUgeCB3aGVuIHggPT0gayAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXkgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5IGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5MV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IGdldF9rZXkyX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAxXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG5cbiAgbGV0IGJsaXRfa2V5MSAodDE6KCdrMSxfLF8pIHQpICh0MjooJ2sxLF8sXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcbiAgbGV0IGJsaXRfa2V5MiAodDE6KF8sJ2syLF8pIHQpICh0MjooXywnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMSB0MiAxIDFcbiAgbGV0IGJsaXRfa2V5MTIgKHQxOignazEsJ2syLF8pIHQpICh0MjooJ2sxLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMlxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXyxfLCdkKSB0KSAodDI6KF8sXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIGxldCBtYWtlIGtleTEga2V5MiBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleTEgZXBoIGtleTE7XG4gICAgc2V0X2tleTIgZXBoIGtleTI7XG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IGtleTEpO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5MSBrZXkyID1cbiAgICBtYXRjaCBnZXRfa2V5MSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleTEgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZ2V0X2tleTIgZXBoIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleTIgLT4gZ2V0X2RhdGEgZXBoXG4gICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLmhhc2ggc2VlZCBrMSArIEgyLmhhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+IFNvbWUgKGsxJywgazInKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IG5cbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKG8xOmludCkgKHQyOignaywnZCkgdCkgKG8yOmludCkgKGw6aW50KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSBvMSB0MiBvMiBsXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGtuX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrbl9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrIGUgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIGxlbmd0aCBlIDw+IEFycmF5Lmxlbmd0aCBrIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBrIC0gMSBkb1xuICAgICAgICAgIG1hdGNoIGdldF9rZXkgZSBpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCB3aGVuIHggPT0gay4oaSkgLT4gKClcbiAgICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgICAgICBkb25lO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIEV4aXQgLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBtYXRjaCBBcnJheS5sZW5ndGggZGltcywgbGF5b3V0IHdpdGhcbiAgICB8IDAsIF8gLT4gYXJyXG4gICAgfCBkbGVuLCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBkbGVuLCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBhIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UgZm9yIHRheFxuICAgYW5kIHNvY2lhbCBiZW5lZml0cyBjb21wdXRhdGlvbiBydWxlcy4gQ29weXJpZ2h0IChDKSAyMDIwIElucmlhLCBjb250cmlidXRvcjpcbiAgIERlbmlzIE1lcmlnb3V4IDxkZW5pcy5tZXJpZ291eEBpbnJpYS5mcj4sIEVtaWxlIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbigqIEFuIGludGVnZXIgbnVtYmVyIG9mIGNlbnRzICopXG50eXBlIG1vbmV5ID0gWi50XG50eXBlIGludGVnZXIgPSBaLnRcbnR5cGUgZGVjaW1hbCA9IFEudFxudHlwZSBkYXRlID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlXG50eXBlIGR1cmF0aW9uID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RcbnR5cGUgJ2EgZW9wdGlvbiA9IEVOb25lIG9mIHVuaXQgfCBFU29tZSBvZiAnYVxuXG50eXBlIHNvdXJjZV9wb3NpdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIHN0YXJ0X2xpbmUgOiBpbnQ7XG4gIHN0YXJ0X2NvbHVtbiA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2x1bW4gOiBpbnQ7XG4gIGxhd19oZWFkaW5ncyA6IHN0cmluZyBsaXN0O1xufVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5leGNlcHRpb24gRW1wdHlFcnJvclxuZXhjZXB0aW9uIEFzc2VydGlvbkZhaWxlZCBvZiBzb3VyY2VfcG9zaXRpb25cbmV4Y2VwdGlvbiBDb25mbGljdEVycm9yIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuZXhjZXB0aW9uIEluZGl2aXNpYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW1wb3NzaWJsZURhdGVcbmV4Y2VwdGlvbiBOb1ZhbHVlUHJvdmlkZWQgb2Ygc291cmNlX3Bvc2l0aW9uXG5cbmxldCBtb25leV9vZl9jZW50c19zdHJpbmcgKGNlbnRzIDogc3RyaW5nKSA6IG1vbmV5ID0gWi5vZl9zdHJpbmcgY2VudHNcbmxldCBtb25leV9vZl91bml0c19pbnQgKHVuaXRzIDogaW50KSA6IG1vbmV5ID0gWi4ob2ZfaW50IHVuaXRzICogb2ZfaW50IDEwMClcbmxldCBtb25leV9vZl9jZW50c19pbnRlZ2VyIChjZW50cyA6IGludGVnZXIpIDogbW9uZXkgPSBjZW50c1xubGV0IG1vbmV5X3RvX2Zsb2F0IChtIDogbW9uZXkpIDogZmxvYXQgPSBaLnRvX2Zsb2F0IG0gLy4gMTAwLlxuXG5sZXQgbW9uZXlfb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpIDogbW9uZXkgPVxuICBRLnRvX2JpZ2ludCAoUS5tdWwgZCAoUS5vZl9pbnQgMTAwKSlcblxubGV0IG1vbmV5X3RvX3N0cmluZyAobSA6IG1vbmV5KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmZcIiBRLih0b19mbG9hdCAob2ZfYmlnaW50IG0gLyBvZl9pbnQgMTAwKSlcblxubGV0IG1vbmV5X3RvX2NlbnRzIG0gPSBtXG5cbmxldCBtb25leV9yb3VuZCAobSA6IG1vbmV5KSA6IG1vbmV5ID1cbiAgbGV0IHVuaXRzLCBjZW50cyA9IFouZGl2X3JlbSBtIChaLm9mX2ludCAxMDApIGluXG4gICgqIElmIFttXSBpcyBuZWdhdGl2ZSwgW2NlbnRzXSB3aWxsIGFsc28gYmUgbmVnYXRpdmUuICopXG4gIGlmIFouKGFicyBjZW50cyA8IG9mX2ludCA1MCkgdGhlbiBaLih1bml0cyAqIG9mX2ludCAxMDApXG4gIGVsc2UgWi4oKHVuaXRzICsgb2ZfaW50IChzaWduIHVuaXRzKSkgKiBvZl9pbnQgMTAwKVxuXG5sZXQgZGVjaW1hbF9vZl9zdHJpbmcgKGQgOiBzdHJpbmcpIDogZGVjaW1hbCA9IFEub2Zfc3RyaW5nIGRcbmxldCBkZWNpbWFsX3RvX2Zsb2F0IChkIDogZGVjaW1hbCkgOiBmbG9hdCA9IFEudG9fZmxvYXQgZFxubGV0IGRlY2ltYWxfb2ZfZmxvYXQgKGQgOiBmbG9hdCkgOiBkZWNpbWFsID0gUS5vZl9mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9pbnRlZ2VyIChkIDogaW50ZWdlcikgOiBkZWNpbWFsID0gUS5vZl9iaWdpbnQgZFxuXG5sZXQgZGVjaW1hbF90b19zdHJpbmcgfihtYXhfcHJlY19kaWdpdHMgOiBpbnQpIChpIDogZGVjaW1hbCkgOiBzdHJpbmcgPVxuICBsZXQgc2lnbiA9IFEuc2lnbiBpIGluXG4gIGxldCBuID0gWi5hYnMgKFEubnVtIGkpIGluXG4gIGxldCBkID0gWi5hYnMgKFEuZGVuIGkpIGluXG4gIGxldCBpbnRfcGFydCA9IFouZWRpdiBuIGQgaW5cbiAgbGV0IG4gPSByZWYgKFouZXJlbSBuIGQpIGluXG4gIGxldCBkaWdpdHMgPSByZWYgW10gaW5cbiAgbGV0IGxlYWRpbmdfemVyb2VzIChkaWdpdHMgOiBaLnQgbGlzdCkgOiBpbnQgPVxuICAgIG1hdGNoXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgKGZ1biBkaWdpdCBudW1fbGVhZGluZ196ZXJvZXMgLT5cbiAgICAgICAgICBtYXRjaCBudW1fbGVhZGluZ196ZXJvZXMgd2l0aFxuICAgICAgICAgIHwgYEVuZCBfIC0+IG51bV9sZWFkaW5nX3plcm9lc1xuICAgICAgICAgIHwgYEJlZ2luIGkgLT4gaWYgWi4oZGlnaXQgPSB6ZXJvKSB0aGVuIGBCZWdpbiAoaSArIDEpIGVsc2UgYEVuZCBpKVxuICAgICAgICBkaWdpdHMgKGBCZWdpbiAwKVxuICAgIHdpdGhcbiAgICB8IGBFbmQgaSAtPiBpXG4gICAgfCBgQmVnaW4gaSAtPiBpXG4gIGluXG4gIHdoaWxlXG4gICAgIW4gPD4gWi56ZXJvXG4gICAgJiYgTGlzdC5sZW5ndGggIWRpZ2l0cyAtIGxlYWRpbmdfemVyb2VzICFkaWdpdHMgPCBtYXhfcHJlY19kaWdpdHNcbiAgZG9cbiAgICBuIDo9IFoubXVsICFuIChaLm9mX2ludCAxMCk7XG4gICAgZGlnaXRzIDo9IFouZWRpdiAhbiBkIDo6ICFkaWdpdHM7XG4gICAgbiA6PSBaLmVyZW0gIW4gZFxuICBkb25lO1xuICBGb3JtYXQuYXNwcmludGYgXCIlcyVhLiVhJXNcIlxuICAgIChpZiBzaWduIDwgMCB0aGVuIFwiLVwiIGVsc2UgXCJcIilcbiAgICBaLnBwX3ByaW50IGludF9wYXJ0XG4gICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIF9mbXQgKCkgLT4gKCkpXG4gICAgICAgKGZ1biBmbXQgZGlnaXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWFcIiBaLnBwX3ByaW50IGRpZ2l0KSlcbiAgICAoTGlzdC5yZXYgIWRpZ2l0cylcbiAgICAoaWYgTGlzdC5sZW5ndGggIWRpZ2l0cyAtIGxlYWRpbmdfemVyb2VzICFkaWdpdHMgPSBtYXhfcHJlY19kaWdpdHMgdGhlbiBcIuKAplwiXG4gICAgZWxzZSBcIlwiKVxuXG5sZXQgZGVjaW1hbF9yb3VuZCAocSA6IGRlY2ltYWwpIDogZGVjaW1hbCA9XG4gICgqIEltcGxlbWVudHMgdGhlIHdvcmthcm91bmQgYnlcbiAgICAgaHR0cHM6Ly9nbXBsaWIub3JnL2xpc3QtYXJjaGl2ZXMvZ21wLWRpc2N1c3MvMjAwOS1NYXkvMDAzNzY3Lmh0bWwgKilcbiAgbGV0IG4gPSBRLm51bSBxIGluXG4gIGxldCBkID0gUS5kZW4gcSBpblxuICBRLm9mX2JpZ2ludCBaLihmZGl2ICgob2ZfaW50IDIgKiBuKSArIGQpIChvZl9pbnQgMiAqIGQpKVxuXG5sZXQgZGVjaW1hbF9vZl9tb25leSAobSA6IG1vbmV5KSA6IGRlY2ltYWwgPVxuICBRLmRpdiAoUS5vZl9iaWdpbnQgbSkgKFEub2ZfaW50IDEwMClcblxubGV0IGludGVnZXJfb2Zfc3RyaW5nIChzIDogc3RyaW5nKSA6IGludGVnZXIgPSBaLm9mX3N0cmluZyBzXG5sZXQgaW50ZWdlcl90b19zdHJpbmcgKGkgOiBpbnRlZ2VyKSA6IHN0cmluZyA9IFoudG9fc3RyaW5nIGlcbmxldCBpbnRlZ2VyX3RvX2ludCAoaSA6IGludGVnZXIpIDogaW50ID0gWi50b19pbnQgaVxubGV0IGludGVnZXJfb2ZfaW50IChpIDogaW50KSA6IGludGVnZXIgPSBaLm9mX2ludCBpXG5sZXQgaW50ZWdlcl9leHBvbmVudGlhdGlvbiAoaSA6IGludGVnZXIpIChlIDogaW50KSA6IGludGVnZXIgPSBaLnBvdyBpIGVcbmxldCBpbnRlZ2VyX2xvZzIgPSBaLmxvZzJcblxubGV0IHllYXJfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCB5LCBfLCBfID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IHlcblxubGV0IG1vbnRoX251bWJlcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IF8sIG0sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgbVxuXG5sZXQgaXNfbGVhcF95ZWFyICh5IDogaW50ZWdlcikgPVxuICBsZXQgeSA9IFoudG9faW50IHkgaW5cbiAgRGF0ZXNfY2FsYy5EYXRlcy5pc19sZWFwX3llYXIgeVxuXG5sZXQgZGF5X29mX21vbnRoX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgXywgZCA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBkXG5cbmxldCBkYXRlX29mX251bWJlcnMgKHllYXIgOiBpbnQpIChtb250aCA6IGludCkgKGRheSA6IGludCkgOiBkYXRlID1cbiAgdHJ5IERhdGVzX2NhbGMuRGF0ZXMubWFrZV9kYXRlIH55ZWFyIH5tb250aCB+ZGF5XG4gIHdpdGggXyAtPiByYWlzZSBJbXBvc3NpYmxlRGF0ZVxuXG5sZXQgZGF0ZV90b19zdHJpbmcgKGQgOiBkYXRlKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRGF0ZXNfY2FsYy5EYXRlcy5mb3JtYXRfZGF0ZSBkXG5cbmxldCBmaXJzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmZpcnN0X2RheV9vZl9tb250aFxubGV0IGxhc3RfZGF5X29mX21vbnRoID0gRGF0ZXNfY2FsYy5EYXRlcy5sYXN0X2RheV9vZl9tb250aFxuXG5sZXQgZHVyYXRpb25fb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGR1cmF0aW9uID1cbiAgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX3BlcmlvZCB+eWVhcnM6eWVhciB+bW9udGhzOm1vbnRoIH5kYXlzOmRheVxuXG5sZXQgZHVyYXRpb25fdG9fc3RyaW5nIChkIDogZHVyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9wZXJpb2QgZFxuKCogYnJlYWtzIHByZXZpb3VzIGZvcm1hdCAqKVxuKCogbGV0IHgsIHksIHogPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC55bWQgZCBpblxuICogbGV0IHRvX3ByaW50ID1cbiAqICAgTGlzdC5maWx0ZXIgKGZ1biAoYSwgXykgLT4gYSA8PiAwKSBbeCwgXCJ5ZWFyc1wiOyB5LCBcIm1vbnRoc1wiOyB6LCBcImRheXNcIl1cbiAqIGluXG4gKiBtYXRjaCB0b19wcmludCB3aXRoXG4gKiB8IFtdIC0+IFwiZW1wdHkgZHVyYXRpb25cIlxuICogfCBfIC0+XG4gKiAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAqICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAqICAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiKVxuICogICAgICAgIChmdW4gZm10IChkLCBsKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZCAlc1wiIGQgbCkpXG4gKiAgICAgdG9fcHJpbnQgKilcblxubGV0IGR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIChkIDogZHVyYXRpb24pIDogaW50ICogaW50ICogaW50ID1cbiAgRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9feW1kcyBkXG5cbmxldCB5b2pzb25fb2ZfbW9uZXkgKG0gOiBtb25leSkgPSBgRmxvYXQgKG1vbmV5X3RvX2Zsb2F0IG0pXG5sZXQgeW9qc29uX29mX2ludGVnZXIgKGkgOiBpbnRlZ2VyKSA9IGBJbnQgKGludGVnZXJfdG9faW50IGkpXG5sZXQgeW9qc29uX29mX2RlY2ltYWwgKGQgOiBkZWNpbWFsKSA9IGBGbG9hdCAoZGVjaW1hbF90b19mbG9hdCBkKVxubGV0IHlvanNvbl9vZl9kYXRlIChkIDogZGF0ZSkgPSBgU3RyaW5nIChkYXRlX3RvX3N0cmluZyBkKVxubGV0IHlvanNvbl9vZl9kdXJhdGlvbiAoZCA6IGR1cmF0aW9uKSA9IGBTdHJpbmcgKGR1cmF0aW9uX3RvX3N0cmluZyBkKVxuXG50eXBlIHJ1bnRpbWVfdmFsdWUgPVxuICB8IFVuaXRcbiAgfCBCb29sIG9mIGJvb2xcbiAgfCBNb25leSBvZiBtb25leVxuICB8IEludGVnZXIgb2YgaW50ZWdlclxuICB8IERlY2ltYWwgb2YgZGVjaW1hbFxuICB8IERhdGUgb2YgZGF0ZVxuICB8IER1cmF0aW9uIG9mIGR1cmF0aW9uXG4gIHwgRW51bSBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgKiBydW50aW1lX3ZhbHVlKVxuICB8IFN0cnVjdCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgKiBydW50aW1lX3ZhbHVlKSBsaXN0XG4gIHwgQXJyYXkgb2YgcnVudGltZV92YWx1ZSBhcnJheVxuICB8IFVuZW1iZWRkYWJsZVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5sZXQgdW5lbWJlZGRhYmxlIF8gPSBVbmVtYmVkZGFibGVcbmxldCBlbWJlZF91bml0ICgpID0gVW5pdFxubGV0IGVtYmVkX2Jvb2wgeCA9IEJvb2wgeFxubGV0IGVtYmVkX21vbmV5IHggPSBNb25leSB4XG5sZXQgZW1iZWRfaW50ZWdlciB4ID0gSW50ZWdlciB4XG5sZXQgZW1iZWRfZGVjaW1hbCB4ID0gRGVjaW1hbCB4XG5sZXQgZW1iZWRfZGF0ZSB4ID0gRGF0ZSB4XG5sZXQgZW1iZWRfZHVyYXRpb24geCA9IER1cmF0aW9uIHhcbmxldCBlbWJlZF9hcnJheSBmIHggPSBBcnJheSAoQXJyYXkubWFwIGYgeClcblxudHlwZSBpbmZvcm1hdGlvbiA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIHlvanNvbl9vZl1cblxudHlwZSByYXdfZXZlbnQgPVxuICB8IEJlZ2luQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IEVuZENhbGwgb2YgaW5mb3JtYXRpb25cbiAgfCBWYXJpYWJsZURlZmluaXRpb24gb2YgaW5mb3JtYXRpb24gKiBydW50aW1lX3ZhbHVlXG4gIHwgRGVjaXNpb25UYWtlbiBvZiBzb3VyY2VfcG9zaXRpb25cblxudHlwZSBldmVudCA9XG4gIHwgVmFyQ29tcHV0YXRpb24gb2YgdmFyX2RlZlxuICB8IEZ1bkNhbGwgb2YgZnVuX2NhbGxcbiAgfCBTdWJTY29wZUNhbGwgb2Yge1xuICAgICAgbmFtZSA6IGluZm9ybWF0aW9uO1xuICAgICAgaW5wdXRzIDogdmFyX2RlZiBsaXN0O1xuICAgICAgYm9keSA6IGV2ZW50IGxpc3Q7XG4gICAgfVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5hbmQgdmFyX2RlZiA9IHtcbiAgcG9zIDogc291cmNlX3Bvc2l0aW9uIG9wdGlvbjtcbiAgbmFtZSA6IGluZm9ybWF0aW9uO1xuICB2YWx1ZSA6IHJ1bnRpbWVfdmFsdWU7XG4gIGZ1bl9jYWxscyA6IGZ1bl9jYWxsIGxpc3Qgb3B0aW9uO1xufVxuXG5hbmQgZnVuX2NhbGwgPSB7XG4gIGZ1bl9uYW1lIDogaW5mb3JtYXRpb247XG4gIGZ1bl9pbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gIGJvZHkgOiBldmVudCBsaXN0O1xuICBvdXRwdXQgOiB2YXJfZGVmO1xufVxuXG5sZXQgbG9nX3JlZiA6IHJhd19ldmVudCBsaXN0IHJlZiA9IHJlZiBbXVxubGV0IHJlc2V0X2xvZyAoKSA9IGxvZ19yZWYgOj0gW11cbmxldCByZXRyaWV2ZV9sb2cgKCkgPSBMaXN0LnJldiAhbG9nX3JlZlxuXG5sZXQgbG9nX2JlZ2luX2NhbGwgaW5mbyBmID1cbiAgbG9nX3JlZiA6PSBCZWdpbkNhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgZlxuXG5sZXQgbG9nX2VuZF9jYWxsIGluZm8geCA9XG4gIGxvZ19yZWYgOj0gRW5kQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiAoaW5mbyA6IHN0cmluZyBsaXN0KSBlbWJlZCAoeCA6ICdhKSA9XG4gIGxvZ19yZWYgOj0gVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBlbWJlZCB4KSA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX2RlY2lzaW9uX3Rha2VuIHBvcyB4ID1cbiAgaWYgeCB0aGVuIGxvZ19yZWYgOj0gRGVjaXNpb25UYWtlbiBwb3MgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IHJlYyBwcF9ldmVudHMgPyhpc19maXJzdF9jYWxsID0gdHJ1ZSkgcHBmIGV2ZW50cyA9XG4gIGxldCByZWMgZm9ybWF0X3Zhcl9kZWYgcHBmIHZhciA9XG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aG92IDI+PHZhcl9kZWYgYXQgJWE+QCAlczpAICVhQF1cIiBmb3JtYXRfcG9zX29wdFxuICAgICAgdmFyLnBvc1xuICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyLm5hbWUpXG4gICAgICBmb3JtYXRfdmFsdWUgdmFyLnZhbHVlXG4gIGFuZCBmb3JtYXRfcG9zX29wdCBwcGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJub19wb3NcIlxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzIGxpbmUgJWQgdG8gJWRcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLmVuZF9saW5lXG4gIGFuZCBmb3JtYXRfdmFyX2RlZnMgcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAIFwiKVxuICAgICAgZm9ybWF0X3Zhcl9kZWYgcHBmXG4gIGFuZCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBwcGYgdmFyX3dpdGhfZnVuID1cbiAgICBtYXRjaCB2YXJfd2l0aF9mdW4uZnVuX2NhbGxzIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFtdIC0+IGZvcm1hdF92YXJfZGVmIHBwZiB2YXJfd2l0aF9mdW5cbiAgICB8IFNvbWUgZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMj48dmFyX2RlZl93aXRoX2Z1bj5AICVzOiAlYUAgY29tcHV0ZWQgZnJvbUAgOkAgQFs8aHYgMj5bQCAlYUA7XFxcbiAgICAgICAgIDwxIC0yPl1AXSBAXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhcl93aXRoX2Z1bi5uYW1lKVxuICAgICAgICBmb3JtYXRfdmFsdWUgdmFyX3dpdGhfZnVuLnZhbHVlXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKVxuICAgICAgICAgICAoZnVuIHBwZiBmdW5fY2FsbCAtPiBmb3JtYXRfZXZlbnQgcHBmIChGdW5DYWxsIGZ1bl9jYWxsKSkpXG4gICAgICAgIGZ1bl9jYWxsc1xuICBhbmQgZm9ybWF0X3ZhbHVlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmVtYmVkZGFibGUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiZnVuXCJcbiAgICB8IFVuaXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiKClcIlxuICAgIHwgQm9vbCB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiViXCIgeFxuICAgIHwgTW9uZXkgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc+KCrFwiIChtb25leV90b19zdHJpbmcgeClcbiAgICB8IEludGVnZXIgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZFwiIChpbnRlZ2VyX3RvX2ludCB4KVxuICAgIHwgRGVjaW1hbCB4IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkZWNpbWFsX3RvX3N0cmluZyB+bWF4X3ByZWNfZGlnaXRzOjEwIHgpXG4gICAgfCBEYXRlIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGF0ZV90b19zdHJpbmcgeClcbiAgICB8IER1cmF0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZHVyYXRpb25fdG9fc3RyaW5nIHgpXG4gICAgfCBFbnVtIChfLCAobmFtZSwgXykpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgbmFtZVxuICAgIHwgU3RydWN0IChuYW1lLCBhdHRycykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+JXMgPSB7QCAlYUA7PDEgLTI+fUBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAsXCIpXG4gICAgICAgICAgIChmdW4gZm10IChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczogJWFcIiBuYW1lIGZvcm1hdF92YWx1ZSB2YWx1ZSkpXG4gICAgICAgIGF0dHJzXG4gICAgfCBBcnJheSBlbHRzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPltAICVhQDs8MSAtMj5dQF1cIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCI7QCBcIilcbiAgICAgICAgICAgZm9ybWF0X3ZhbHVlKVxuICAgICAgICAoZWx0cyB8PiBBcnJheS50b19saXN0KVxuICBhbmQgZm9ybWF0X2V2ZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmX3dpdGhfZnVuXG4gICAgICB3aGVuIE9wdGlvbi5pc19zb21lIHZhcl9kZWZfd2l0aF9mdW4uZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHZhcl9kZWZfd2l0aF9mdW5cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZiB2YXJfZGVmXG4gICAgfCBGdW5DYWxsIHsgZnVuX25hbWU7IGZ1bl9pbnB1dHM7IGJvZHk7IG91dHB1dCB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMT48ZnVuY3Rpb25fY2FsbD5AICVzIDo9QCB7QFs8aHYgMT5AIGlucHV0OkAgJWEsQCBvdXRwdXQ6QCBcXFxuICAgICAgICAgJWEsQCBib2R5OkAgW0AsXFxcbiAgICAgICAgICVhXUBdQCxcXFxuICAgICAgICAgQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgZnVuX25hbWUpXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiOyBcIilcbiAgICAgICAgICAgZm9ybWF0X3Zhcl9kZWYpXG4gICAgICAgIGZ1bl9pbnB1dHMgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgb3V0cHV0XG4gICAgICAgIChwcF9ldmVudHMgfmlzX2ZpcnN0X2NhbGw6ZmFsc2UpXG4gICAgICAgIGJvZHlcbiAgICB8IFN1YlNjb3BlQ2FsbCB7IG5hbWU7IGlucHV0czsgYm9keSB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxodiAyPjxzdWJzY29wZV9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAsXFxcbiAgICAgICAgIGlucHV0czpAIEBbPGh2IDI+W0AsXFxcbiAgICAgICAgICVhQF1dLEAsXFxcbiAgICAgICAgIGJvZHk6QCBAWzxodiAyPltAICVhQCBdQF1AXUBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpIGZvcm1hdF92YXJfZGVmcyBpbnB1dHNcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAoXCJAWzxodiAxPiVhQF1cIiBeXiBpZiBpc19maXJzdF9jYWxsIHRoZW4gXCJALlwiIGVsc2UgXCJcIilcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICAgZm9ybWF0X2V2ZW50KVxuICAgIGV2ZW50c1xuXG5tb2R1bGUgRXZlbnRQYXJzZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFZhckRlZk1hcCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdHJpbmdNYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgdHlwZSB0ID0gdmFyX2RlZiBsaXN0IFN0cmluZ01hcC50XG5cbiAgICBsZXQgYWRkIChuYW1lIDogc3RyaW5nKSAodiA6IHZhcl9kZWYpIChtYXAgOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGhcbiAgICAgIHwgU29tZSBscyAtPiBTdHJpbmdNYXAuYWRkIG5hbWUgKHYgOjogbHMpIG1hcFxuICAgICAgfCBOb25lIC0+IFN0cmluZ01hcC5hZGQgbmFtZSBbdl0gbWFwXG5cbiAgICAoKiogW2dldCBuYW1lIG1hcF0gcmV0dXJucyB0aGUgbGlzdCBvZiBkZWZpbml0aW9ucyBpZiB0aGVyZSBpcyBhXG4gICAgICAgIGNvcnJlc3BvbmRpbmcgZW50cnksIG90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4gKilcbiAgICBsZXQgZ2V0IChuYW1lIDogc3RyaW5nKSAobWFwIDogdCkgOiB2YXJfZGVmIGxpc3QgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGggU29tZSBscyAtPiBscyB8IE5vbmUgLT4gW11cblxuICAgIGxldCBlbXB0eSA6IHQgPSBTdHJpbmdNYXAuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSBjb250ZXh0ID0ge1xuICAgICgqIEtlZXBzIHRyYWNrcyBvZiB0aGUgc3Vic2NvcGUgaW5wdXQgdmFyaWFibGUgZGVmaW5pdGlvbnMuICopXG4gICAgdmFycyA6IFZhckRlZk1hcC50O1xuICAgICgqIEN1cnJlbnQgcGFyc2VkIGV2ZW50cy4gKilcbiAgICBldmVudHMgOiBldmVudCBsaXN0O1xuICAgIHJlc3QgOiByYXdfZXZlbnQgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eV9jdHggPSB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0ID0gW10gfVxuXG4gIGxldCByYXdfZXZlbnRfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEJlZ2luQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkJlZ2luQ2FsbChbIFwiIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSBeIFwiIF0pXCJcbiAgICB8IEVuZENhbGwgbmFtZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJFbmRDYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFyaWFibGVEZWZpbml0aW9uKFsgJXMgXSwgJXMpXCIgKFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUpXG4gICAgICAgICh5b2pzb25fb2ZfcnVudGltZV92YWx1ZSB2YWx1ZSB8PiBZb2pzb24uU2FmZS50b19zdHJpbmcpXG4gICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJEZWNpc2lvblRha2VuKCVzOiVkLiVkLSVkLiVkKVwiIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZVxuICAgICAgICBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZSBwb3MuZW5kX2NvbHVtblxuXG4gICgqKiBbdGFrZXdoaWxlIHAgeHNdIHNwbGl0IHRoZSBsaXN0IFt4c10gYXMgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBsaXN0XG4gICAgICBbeHNdIHdoZXJlIGV2ZXJ5IGVsZW1lbnQgW3hdIHNhdGlzZmllcyBbcCB4XSBhbmQgdGhlIHJlc3QuICopXG4gIGxldCByZWMgdGFrZV93aGlsZSAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBsaXN0ICogJ2EgbGlzdCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IGggOjogdCB3aGVuIHAgaCAtPlxuICAgICAgbGV0IHQsIHJlc3QgPSB0YWtlX3doaWxlIHAgdCBpblxuICAgICAgaCA6OiB0LCByZXN0XG4gICAgfCBfIC0+IFtdLCBsXG5cbiAgbGV0IHBhcnNlX3Jhd19ldmVudHMgcmF3X2V2ZW50cyA9XG4gICAgbGV0IG5iX3Jhd19ldmVudHMgPSBMaXN0Lmxlbmd0aCByYXdfZXZlbnRzXG4gICAgYW5kIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgPSAyID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyA9IDMgPSBMaXN0Lmxlbmd0aCBpbmZvc1xuICAgIGFuZCBpc192YXJfZGVmIG5hbWUgPSAyID0gTGlzdC5sZW5ndGggbmFtZVxuICAgIGFuZCBpc19vdXRwdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDMgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFwib3V0cHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDMgPSBMaXN0Lmxlbmd0aCBuYW1lXG4gICAgICAmJiBTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeDpcImlucHV0XCIgKExpc3QubnRoIG5hbWUgMilcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuICAgIGxldCByZWMgcGFyc2VfZXZlbnRzIChjdHggOiBjb250ZXh0KSA6IGNvbnRleHQgPVxuICAgICAgbWF0Y2ggY3R4LnJlc3Qgd2l0aFxuICAgICAgfCBbXSAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXYgfVxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIF8pIDo6IHJlc3Qgd2hlbiBpc192YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgKCogVmFyaWFibGVEZWZpbml0aW9uIHdpdGhvdXQgcG9zaXRpb24gY29ycmVzcG9uZHMgdG8gYSBmdW5jdGlvblxuICAgICAgICAgICBkZWZpbml0aW9uIHdoaWNoIGFyZSBpZ25vcmVkIGZvciBub3cgaW4gc3RydWN0dXJlZCBldmVudHMuICopXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIHJlc3QgfVxuICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyA6OiBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lIC0+IChcbiAgICAgICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgIHwgW187IHZhcl9kb3Rfc3Vic2NvcGVfdmFyX25hbWVdIC0+XG4gICAgICAgICAgbGV0IHZhcl9uYW1lID1cbiAgICAgICAgICAgIExpc3QubnRoIChTdHJpbmcuc3BsaXRfb25fY2hhciAnLicgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSkgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICAgIHZhcnMgPVxuICAgICAgICAgICAgICAgIGN0eC52YXJzXG4gICAgICAgICAgICAgICAgfD4gVmFyRGVmTWFwLmFkZCB2YXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmXSB0ZXN0XCIpXG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc192YXJfZGVmIG5hbWUgfHwgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb24geyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfVxuICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAoKiBWYXJpYWJsZSBkZWZpbml0aW9uIHdpdGggZnVuY3Rpb24gY2FsbHMuICopXG4gICAgICAgIGxldCByZWMgcGFyc2VfZnVuX2NhbGxzIGZ1bl9jYWxscyByYXdfZXZlbnRzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgdGFrZV93aGlsZVxuICAgICAgICAgICAgICAoZnVuY3Rpb24gVmFyaWFibGVEZWZpbml0aW9uIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIHJhd19ldmVudHNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfLCBCZWdpbkNhbGwgaW5mb3MgOjogXyB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIHJhd19ldmVudHMgaW5cbiAgICAgICAgICAgIHBhcnNlX2Z1bl9jYWxscyAoZnVuX2NhbGwgOjogZnVuX2NhbGxzKSByZXN0XG4gICAgICAgICAgfCBfIC0+IHJhd19ldmVudHMsIGZ1bl9jYWxscyB8PiBMaXN0LnJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgdmFyX2NvbXAgPVxuICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbHMgPSBwYXJzZV9mdW5fY2FsbHMgW10gKExpc3QudGwgY3R4LnJlc3QpIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAoIHJlc3QsXG4gICAgICAgICAgICAgIFZhckNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IFNvbWUgZnVuX2NhbGxzIH0gKVxuICAgICAgICAgIHwgZXZlbnQgOjogXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFwiXG4gICAgICAgICAgICAgIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudFxuICAgICAgICAgICAgICBeIFwiW1wiXG4gICAgICAgICAgICAgIF4gKG5iX3Jhd19ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXN0ICsgMSB8PiBzdHJpbmdfb2ZfaW50KVxuICAgICAgICAgICAgICBeIFwiXVwiKVxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChcIkludmFsaWQgZnVuY3Rpb24gY2FsbCAoWyBcIlxuICAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXQgXCIsIFwiIGluZm9zXG4gICAgICAgICAgICAgIF4gXCIgXSk6IGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24gKGZ1bmN0aW9uIG91dHB1dCksIGZvdW5kOiBcXFxuICAgICAgICAgICAgICAgICBlbmQgb2YgdG9rZW5zXCIpXG4gICAgICAgIGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gdmFyX2NvbXAgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvc1xuICAgICAgICAtPlxuICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGwgPSBwYXJzZV9mdW5fY2FsbCBjdHgucmVzdCBpblxuXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIGV2ZW50cyA9IEZ1bkNhbGwgZnVuX2NhbGwgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyAtPiAoXG4gICAgICAgIG1hdGNoIGluZm9zIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX25hbWU7IF9dIC0+XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID0gcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCB9IGluXG4gICAgICAgICAgbGV0IGlucHV0cyA9IFZhckRlZk1hcC5nZXQgdmFyX25hbWUgY3R4LnZhcnMgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgICBTdWJTY29wZUNhbGwgeyBuYW1lID0gaW5mb3M7IGlucHV0czsgYm9keSA9IGJvZHlfY3R4LmV2ZW50cyB9XG4gICAgICAgICAgICAgICAgOjogY3R4LmV2ZW50cztcbiAgICAgICAgICAgICAgcmVzdCA9IGJvZHlfY3R4LnJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2NhbGxdIHRlc3RcIilcbiAgICAgIHwgRW5kQ2FsbCBfIDo6IHJlc3QgLT4geyBjdHggd2l0aCBldmVudHMgPSBjdHguZXZlbnRzIHw+IExpc3QucmV2OyByZXN0IH1cbiAgICAgIHwgZXZlbnQgOjogXyAtPiBmYWlsd2l0aCAoXCJVbmV4cGVjdGVkIGV2ZW50OiBcIiBeIHJhd19ldmVudF90b19zdHJpbmcgZXZlbnQpXG4gICAgYW5kIHBhcnNlX2Z1bl9jYWxsIGV2ZW50cyA9XG4gICAgICBtYXRjaFxuICAgICAgICB0YWtlX3doaWxlXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgXykgLT4gaXNfaW5wdXRfdmFyX2RlZiBuYW1lIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICBldmVudHNcbiAgICAgIHdpdGhcbiAgICAgIHwgaW5wdXRzLCBCZWdpbkNhbGwgaW5mb3MgOjogcmVzdCB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgbGV0IGZ1bl9pbnB1dHMgPVxuICAgICAgICAgIExpc3RMYWJlbHMubWFwIGlucHV0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICAgeyBwb3MgPSBOb25lOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9XG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgYm9keSwgb3V0cHV0ID1cbiAgICAgICAgICBsZXQgYm9keV9jdHggPVxuICAgICAgICAgICAgcGFyc2VfZXZlbnRzIHsgdmFycyA9IFZhckRlZk1hcC5lbXB0eTsgZXZlbnRzID0gW107IHJlc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJvZHlfcmV2ID0gTGlzdC5yZXYgYm9keV9jdHguZXZlbnRzIGluXG4gICAgICAgICAgYm9keV9jdHgucmVzdCwgYm9keV9yZXYgfD4gTGlzdC50bCB8PiBMaXN0LnJldiwgYm9keV9yZXYgfD4gTGlzdC5oZFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBtYXRjaCBvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgVmFyQ29tcHV0YXRpb24gdmFyX2RlZiAtPiB2YXJfZGVmXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWlzc2luZyBmdW5jdGlvbiBvdXRwdXQgdmFyaWFibGUgZGVmaW5pdGlvbi5cIlxuICAgICAgICBpblxuXG4gICAgICAgIHJlc3QsIHsgZnVuX25hbWUgPSBpbmZvczsgZnVuX2lucHV0czsgYm9keTsgb3V0cHV0IH1cbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIkludmFsaWQgc3RhcnQgb2YgZnVuY3Rpb24gY2FsbC5cIlxuICAgIGluXG5cbiAgICBsZXQgY3R4ID1cbiAgICAgIHRyeSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0ID0gcmF3X2V2ZW50cyB9XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+XG4gICAgICAgICgqIFRPRE86IGRpc2N1c3Mgd2hhdCBzaG91bGQgYmUgZG9uZS4gKilcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHJhdyBldmVudHM6ICVzXFxuXCIgbXNnO1xuICAgICAgICBlbXB0eV9jdHhcbiAgICBpblxuICAgIGN0eC5ldmVudHNcbmVuZFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgOlxuICAgICAgJ2EuXG4gICAgICBzb3VyY2VfcG9zaXRpb24gLT5cbiAgICAgICh1bml0IC0+ICdhKSBhcnJheSAtPlxuICAgICAgKHVuaXQgLT4gYm9vbCkgLT5cbiAgICAgICh1bml0IC0+ICdhKSAtPlxuICAgICAgJ2EgPVxuIGZ1biBwb3MgZXhjZXB0aW9ucyBqdXN0IGNvbnMgLT5cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbGV0IG5ld192YWwgPSB0cnkgU29tZSAoZXhjZXB0ICgpKSB3aXRoIEVtcHR5RXJyb3IgLT4gTm9uZSBpblxuICAgICAgICBtYXRjaCBhY2MsIG5ld192YWwgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gbmV3X3ZhbFxuICAgICAgICB8IFNvbWUgXywgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIF8sIFNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgTm9uZSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGlmIGp1c3QgKCkgdGhlbiBjb25zICgpIGVsc2UgcmFpc2UgRW1wdHlFcnJvclxuXG5sZXQgaGFuZGxlX2RlZmF1bHRfb3B0XG4gICAgKHBvcyA6IHNvdXJjZV9wb3NpdGlvbilcbiAgICAoZXhjZXB0aW9ucyA6ICdhIGVvcHRpb24gYXJyYXkpXG4gICAgKGp1c3QgOiBib29sIGVvcHRpb24pXG4gICAgKGNvbnMgOiAnYSBlb3B0aW9uKSA6ICdhIGVvcHRpb24gPVxuICBsZXQgZXhjZXB0ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGV4Y2VwdCAtPlxuICAgICAgICBtYXRjaCBhY2MsIGV4Y2VwdCB3aXRoXG4gICAgICAgIHwgRU5vbmUgXywgXyAtPiBleGNlcHRcbiAgICAgICAgfCBFU29tZSBfLCBFTm9uZSBfIC0+IGFjY1xuICAgICAgICB8IEVTb21lIF8sIEVTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIChFTm9uZSAoKSkgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IEVTb21lIF8gLT4gZXhjZXB0XG4gIHwgRU5vbmUgXyAtPiAoXG4gICAgbWF0Y2gganVzdCB3aXRoXG4gICAgfCBFU29tZSBiIC0+IGlmIGIgdGhlbiBjb25zIGVsc2UgRU5vbmUgKClcbiAgICB8IEVOb25lIF8gLT4gRU5vbmUgKCkpXG5cbmxldCBub19pbnB1dCA6IHVuaXQgLT4gJ2EgPSBmdW4gXyAtPiByYWlzZSBFbXB0eUVycm9yXG5cbigqIFRPRE86IGFkZCBhIGNvbXBhcmUgYnVpbHQtaW4gdG8gZGF0ZXNfY2FsYy4gQXQgdGhlIG1vbWVudCB0aGlzIGZhaWxzIG9uIGUuZy5cbiAgIFszIG1vbnRocywgNCBtb250aHNdICopXG5sZXQgY29tcGFyZV9wZXJpb2RzIChwMSA6IGR1cmF0aW9uKSAocDIgOiBkdXJhdGlvbikgOiBpbnQgPVxuICB0cnlcbiAgICBsZXQgcDFfZGF5cyA9IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgcDEgaW5cbiAgICBsZXQgcDJfZGF5cyA9IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgcDIgaW5cbiAgICBjb21wYXJlIHAxX2RheXMgcDJfZGF5c1xuICB3aXRoIERhdGVzX2NhbGMuRGF0ZXMuQW1iaWd1b3VzQ29tcHV0YXRpb24gLT4gcmFpc2UgVW5jb21wYXJhYmxlRHVyYXRpb25zXG5cbigqIFRPRE86IHNhbWUgaGVyZSwgYWx0aG91Z2ggaXQgd2FzIHR3ZWFrZWQgdG8gbmV2ZXIgZmFpbCBvbiBlcXVhbCBkYXRlcy5cbiAgIENvbXBhcmluZyB0aGUgZGlmZmVyZW5jZSB0byBkdXJhdGlvbl8wIGlzIG5vdCBhIGdvb2QgaWRlYSBiZWNhdXNlIHdlIHN0aWxsXG4gICB3YW50IHRvIGZhaWwgb24gWzEgbW9udGgsIDMwIGRheXNdIHJhdGhlciB0aGFuIHJldHVybiBbZmFsc2VdICopXG5sZXQgZXF1YWxfcGVyaW9kcyAocDEgOiBkdXJhdGlvbikgKHAyIDogZHVyYXRpb24pIDogYm9vbCA9XG4gIHRyeSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIChEYXRlc19jYWxjLkRhdGVzLnN1Yl9wZXJpb2RzIHAxIHAyKSA9IDBcbiAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG5tb2R1bGUgT3BlciA9IHN0cnVjdFxuICBsZXQgb19ub3QgPSBTdGRsaWIubm90XG4gIGxldCBvX2xlbmd0aCBhID0gWi5vZl9pbnQgKEFycmF5Lmxlbmd0aCBhKVxuICBsZXQgb190b3JhdF9pbnQgPSBkZWNpbWFsX29mX2ludGVnZXJcbiAgbGV0IG9fdG9yYXRfbW9uID0gZGVjaW1hbF9vZl9tb25leVxuICBsZXQgb190b21vbmV5X3JhdCA9IG1vbmV5X29mX2RlY2ltYWxcbiAgbGV0IG9fZ2V0RGF5ID0gZGF5X29mX21vbnRoX29mX2RhdGVcbiAgbGV0IG9fZ2V0TW9udGggPSBtb250aF9udW1iZXJfb2ZfZGF0ZVxuICBsZXQgb19nZXRZZWFyID0geWVhcl9vZl9kYXRlXG4gIGxldCBvX2ZpcnN0RGF5T2ZNb250aCA9IGZpcnN0X2RheV9vZl9tb250aFxuICBsZXQgb19sYXN0RGF5T2ZNb250aCA9IGxhc3RfZGF5X29mX21vbnRoXG4gIGxldCBvX3JvdW5kX21vbiA9IG1vbmV5X3JvdW5kXG4gIGxldCBvX3JvdW5kX3JhdCA9IGRlY2ltYWxfcm91bmRcbiAgbGV0IG9fbWludXNfaW50IGkxID0gWi5zdWIgWi56ZXJvIGkxXG4gIGxldCBvX21pbnVzX3JhdCBpMSA9IFEuc3ViIFEuemVybyBpMVxuICBsZXQgb19taW51c19tb24gbTEgPSBaLnN1YiBaLnplcm8gbTFcbiAgbGV0IG9fbWludXNfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5uZWdfcGVyaW9kXG4gIGxldCBvX2FuZCA9ICggJiYgKVxuICBsZXQgb19vciA9ICggfHwgKVxuICBsZXQgb194b3IgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPD4gKVxuICBsZXQgb19lcSA9ICggPSApXG4gIGxldCBvX21hcCA9IEFycmF5Lm1hcFxuXG4gIGxldCBvX3JlZHVjZSBmIGRmdCBhID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gZGZ0XG4gICAgZWxzZVxuICAgICAgbGV0IHIgPSByZWYgYS4oMCkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIHIgOj0gZiAhciBhLihpKVxuICAgICAgZG9uZTtcbiAgICAgICFyXG5cbiAgbGV0IG9fY29uY2F0ID0gQXJyYXkuYXBwZW5kXG4gIGxldCBvX2ZpbHRlciBmIGEgPSBBcnJheS5vZl9saXN0IChMaXN0LmZpbHRlciBmIChBcnJheS50b19saXN0IGEpKVxuICBsZXQgb19hZGRfaW50X2ludCBpMSBpMiA9IFouYWRkIGkxIGkyXG4gIGxldCBvX2FkZF9yYXRfcmF0IGkxIGkyID0gUS5hZGQgaTEgaTJcbiAgbGV0IG9fYWRkX21vbl9tb24gbTEgbTIgPSBaLmFkZCBtMSBtMlxuICBsZXQgb19hZGRfZGF0X2R1ciBkYSBkdSA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX2RhdGVzIGRhIGR1XG4gIGxldCBvX2FkZF9kdXJfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5hZGRfcGVyaW9kc1xuICBsZXQgb19zdWJfaW50X2ludCBpMSBpMiA9IFouc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9yYXRfcmF0IGkxIGkyID0gUS5zdWIgaTEgaTJcbiAgbGV0IG9fc3ViX21vbl9tb24gbTEgbTIgPSBaLnN1YiBtMSBtMlxuICBsZXQgb19zdWJfZGF0X2RhdCA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX2RhdGVzXG4gIGxldCBvX3N1Yl9kYXRfZHVyIGRhdCBkdXIgPSBEYXRlc19jYWxjLkRhdGVzLihhZGRfZGF0ZXMgZGF0IChuZWdfcGVyaW9kIGR1cikpXG4gIGxldCBvX3N1Yl9kdXJfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5zdWJfcGVyaW9kc1xuICBsZXQgb19tdWx0X2ludF9pbnQgaTEgaTIgPSBaLm11bCBpMSBpMlxuICBsZXQgb19tdWx0X3JhdF9yYXQgaTEgaTIgPSBRLm11bCBpMSBpMlxuXG4gIGxldCBvX211bHRfbW9uX3JhdCBpMSBpMiA9XG4gICAgbGV0IGkxX2FicyA9IFouYWJzIGkxIGluXG4gICAgbGV0IGkyX2FicyA9IFEuYWJzIGkyIGluXG4gICAgbGV0IHNpZ25faW50ID0gWi5zaWduIGkxICogUS5zaWduIGkyIGluXG4gICAgbGV0IHJhdF9yZXN1bHQgPSBRLm11bCAoUS5vZl9iaWdpbnQgaTFfYWJzKSBpMl9hYnMgaW5cbiAgICBsZXQgcmVzLCByZW1haW5kZXIgPSBaLmRpdl9yZW0gKFEubnVtIHJhdF9yZXN1bHQpIChRLmRlbiByYXRfcmVzdWx0KSBpblxuICAgICgqIHdlIHBlcmZvcm0gbmVhcmVzdCByb3VuZGluZyB3aGVuIG11bHRpcGx5aW5nIGFuIGFtb3VudCBvZiBtb25leSBieSBhXG4gICAgICAgZGVjaW1hbCAhKilcbiAgICBpZiBaLihvZl9pbnQgMiAqIHJlbWFpbmRlciA+PSBRLmRlbiByYXRfcmVzdWx0KSB0aGVuXG4gICAgICBaLihhZGQgcmVzIChvZl9pbnQgMSkgKiBvZl9pbnQgc2lnbl9pbnQpXG4gICAgZWxzZSBaLihyZXMgKiBvZl9pbnQgc2lnbl9pbnQpXG5cbiAgbGV0IG9fbXVsdF9kdXJfaW50IGQgbSA9IERhdGVzX2NhbGMuRGF0ZXMubXVsX3BlcmlvZCBkIChaLnRvX2ludCBtKVxuXG4gIGxldCBvX2Rpdl9pbnRfaW50IGkxIGkyID1cbiAgICAoKiBJdCdzIG5vdCBvbiB0aGUgb2NhbWxkb2MsIGJ1dCBRLmRpdiBsaWtlbHkgYWxyZWFkeSByYWlzZXMgdGhpcyA/ICopXG4gICAgaWYgWi56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvXG4gICAgZWxzZSBRLmRpdiAoUS5vZl9iaWdpbnQgaTEpIChRLm9mX2JpZ2ludCBpMilcblxuICBsZXQgb19kaXZfcmF0X3JhdCBpMSBpMiA9XG4gICAgaWYgUS56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS5kaXYgaTEgaTJcblxuICBsZXQgb19kaXZfbW9uX21vbiBtMSBtMiA9XG4gICAgaWYgWi56ZXJvID0gbTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvXG4gICAgZWxzZSBRLmRpdiAoUS5vZl9iaWdpbnQgbTEpIChRLm9mX2JpZ2ludCBtMilcblxuICBsZXQgb19kaXZfbW9uX3JhdCBtMSByMSA9XG4gICAgaWYgUS56ZXJvID0gcjEgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2Ugb19tdWx0X21vbl9yYXQgbTEgKFEuaW52IHIxKVxuXG4gIGxldCBvX2Rpdl9kdXJfZHVyIGQxIGQyID1cbiAgICBsZXQgaTEsIGkyID1cbiAgICAgIHRyeVxuICAgICAgICAoIGludGVnZXJfb2ZfaW50IChEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIGQxKSxcbiAgICAgICAgICBpbnRlZ2VyX29mX2ludCAoRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBkMikgKVxuICAgICAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIEluZGl2aXNpYmxlRHVyYXRpb25zXG4gICAgaW5cbiAgICBvX2Rpdl9pbnRfaW50IGkxIGkyXG5cbiAgbGV0IG9fbHRfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA8IDBcbiAgbGV0IG9fbHRfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA8IDBcbiAgbGV0IG9fbHRfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA8IDBcbiAgbGV0IG9fbHRfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8IDBcbiAgbGV0IG9fbHRfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA8IDBcbiAgbGV0IG9fbHRlX2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPD0gMFxuICBsZXQgb19sdGVfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA8PSAwXG4gIGxldCBvX2x0ZV9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yIDw9IDBcbiAgbGV0IG9fbHRlX2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPD0gMFxuICBsZXQgb19sdGVfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA8PSAwXG4gIGxldCBvX2d0X2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPiAwXG4gIGxldCBvX2d0X3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPiAwXG4gIGxldCBvX2d0X21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPiAwXG4gIGxldCBvX2d0X2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPiAwXG4gIGxldCBvX2d0X2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPiAwXG4gIGxldCBvX2d0ZV9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyID49IDBcbiAgbGV0IG9fZ3RlX3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPj0gMFxuICBsZXQgb19ndGVfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA+PSAwXG4gIGxldCBvX2d0ZV9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID49IDBcbiAgbGV0IG9fZ3RlX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPj0gMFxuICBsZXQgb19lcV9pbnRfaW50IGkxIGkyID0gWi5lcXVhbCBpMSBpMlxuICBsZXQgb19lcV9yYXRfcmF0IGkxIGkyID0gUS5lcXVhbCBpMSBpMlxuICBsZXQgb19lcV9tb25fbW9uIG0xIG0yID0gWi5lcXVhbCBtMSBtMlxuICBsZXQgb19lcV9kdXJfZHVyIGQxIGQyID0gZXF1YWxfcGVyaW9kcyBkMSBkMlxuICBsZXQgb19lcV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID0gMFxuICBsZXQgb19mb2xkID0gQXJyYXkuZm9sZF9sZWZ0XG5lbmRcblxuaW5jbHVkZSBPcGVyXG4iLG51bGwsbnVsbCwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIENhdGFsYSBjb21waWxlciwgYSBzcGVjaWZpY2F0aW9uIGxhbmd1YWdlIGZvciB0YXhcbiAgIGFuZCBzb2NpYWwgYmVuZWZpdHMgY29tcHV0YXRpb24gcnVsZXMuIENvcHlyaWdodCAoQykgMjAyMCBJbnJpYSwgY29udHJpYnV0b3I6XG4gICBFbWlsZSBSb2xsZXkgPGVtaWxlLnJvbGxleUB0dXRhLmlvPi5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFJfb2NhbWwgPSBSdW50aW1lX29jYW1sLlJ1bnRpbWVcblxuY2xhc3MgdHlwZSBzb3VyY2VfcG9zaXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZmlsZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXJ0TGluZSA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGVuZExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydENvbHVtbiA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGVuZENvbHVtbiA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGxhd0hlYWRpbmdzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIHJhd19ldmVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBldmVudFR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIHNvdXJjZVBvc2l0aW9uIDogc291cmNlX3Bvc2l0aW9uIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgICBtZXRob2QgbG9nZ2VkVmFsdWVKc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBldmVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBkdXJhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB5ZWFycyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRocyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRheXMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGR1cmF0aW9uX29mX2pzb28gZCA9XG4gIFJfb2NhbWwuZHVyYXRpb25fb2ZfbnVtYmVycyBkIyMueWVhcnMgZCMjLm1vbnRocyBkIyMuZGF5c1xuXG5sZXQgZHVyYXRpb25fdG9fanNvbyBkID1cbiAgbGV0IHllYXJzLCBtb250aHMsIGRheXMgPSBSX29jYW1sLmR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIGQgaW5cbiAgb2JqZWN0JWpzXG4gICAgdmFsIHllYXJzID0geWVhcnNcbiAgICB2YWwgbW9udGhzID0gbW9udGhzXG4gICAgdmFsIGRheXMgPSBkYXlzXG4gIGVuZFxuXG5sZXQgZGF0ZV9vZl9qc29vIGQgPVxuICBsZXQgZCA9IEpzLnRvX3N0cmluZyBkIGluXG4gIGxldCBkID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZCAnVCcgdGhlbiBkIHw+IFN0cmluZy5zcGxpdF9vbl9jaGFyICdUJyB8PiBMaXN0LmhkXG4gICAgZWxzZSBkXG4gIGluXG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyICctJyBkIHdpdGhcbiAgfCBbeWVhcjsgbW9udGg7IGRheV0gLT5cbiAgICBSX29jYW1sLmRhdGVfb2ZfbnVtYmVycyAoaW50X29mX3N0cmluZyB5ZWFyKSAoaW50X29mX3N0cmluZyBtb250aClcbiAgICAgIChpbnRfb2Zfc3RyaW5nIGRheSlcbiAgfCBfIC0+IGZhaWx3aXRoIFwiZGF0ZV9vZl9qc29vOiBpbnZhbGlkIGRhdGVcIlxuXG5sZXQgZGF0ZV90b19qc29vIGQgPSBKcy5zdHJpbmcgQEAgUl9vY2FtbC5kYXRlX3RvX3N0cmluZyBkXG5cbmNsYXNzIHR5cGUgZXZlbnRfbWFuYWdlciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNldExvZyA6ICh1bml0LCB1bml0KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA6XG4gICAgICAodW5pdCwgZXZlbnQgSnMudCBKcy5qc19hcnJheSBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZVJhd0V2ZW50cyA6XG4gICAgICAodW5pdCwgcmF3X2V2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuXG5sZXQgZXZlbnRfbWFuYWdlciA6IGV2ZW50X21hbmFnZXIgSnMudCA9XG4gIG9iamVjdCVqc1xuICAgIG1ldGhvZCByZXNldExvZyA9IEpzLndyYXBfbWV0aF9jYWxsYmFjayBSX29jYW1sLnJlc2V0X2xvZ1xuXG4gICAgbWV0aG9kIHJldHJpZXZlRXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKClcbiAgICAgICAgICAgICAgIHw+IFJfb2NhbWwuRXZlbnRQYXJzZXIucGFyc2VfcmF3X2V2ZW50c1xuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpKSkpXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgPVxuICAgICAgSnMud3JhcF9tZXRoX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZXZlbnRUeXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSX29jYW1sLkJlZ2luQ2FsbCBfIC0+IFwiQmVnaW4gY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBfIC0+IFwiRW5kIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIC0+IFwiVmFyaWFibGUgZGVmaW5pdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFwiRGVjaXNpb24gdGFrZW5cIilcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGluZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJlZ2luQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIEpzLnN0cmluZyBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFtdKSlcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxvZ2dlZFZhbHVlSnNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChfLCB2KSAtPiB2XG4gICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgXyB8IEJlZ2luQ2FsbCBfIHwgRGVjaXNpb25UYWtlbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJfb2NhbWwudW5lbWJlZGRhYmxlICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfD4gUl9vY2FtbC55b2pzb25fb2ZfcnVudGltZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBKcy5zdHJpbmdcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHNvdXJjZVBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmRlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBmaWxlTmFtZSA9IEpzLnN0cmluZyBwb3MuZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFydExpbmUgPSBwb3Muc3RhcnRfbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGVuZExpbmUgPSBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFydENvbHVtbiA9IHBvcy5zdGFydF9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRDb2x1bW4gPSBwb3MuZW5kX2NvbHVtblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgbGF3SGVhZGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIEpzLnN0cmluZyBwb3MubGF3X2hlYWRpbmdzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gSnMudW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAgICAgICAgICAgICAgIChSX29jYW1sLnJldHJpZXZlX2xvZyAoKSkpKSlcbiAgZW5kXG5cbmxldCBleGVjdXRlX29yX3Rocm93X2Vycm9yIGYgPVxuICBsZXQgdGhyb3dfZXJyb3IgKGRlc2NyIDogc3RyaW5nKSAocG9zIDogUl9vY2FtbC5zb3VyY2VfcG9zaXRpb24pID1cbiAgICBsZXQgbXNnID1cbiAgICAgIEpzLnN0cmluZ1xuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJXMgaW4gZmlsZSAlcywgcG9zaXRpb24gJWQ6JWQtLSVkOiVkLlwiIGRlc2NyXG4gICAgICAgICAgIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZSBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZVxuICAgICAgICAgICBwb3MuZW5kX2NvbHVtbilcbiAgICBpblxuICAgIEpzLkpzX2Vycm9yLnJhaXNlX1xuICAgICAgKEpzLkpzX2Vycm9yLm9mX2Vycm9yXG4gICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBuYW1lID0gSnMuc3RyaW5nIFwiTm9WYWx1ZVByb3ZpZGVkXCJcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIG1lc3NhZ2UgPSBtc2dcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YWNrID0gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgICAgICBtZXRob2QgdG9TdHJpbmcgPSBtc2dcbiAgICAgICAgIGVuZCkpXG4gIGluXG4gIHRyeSBmICgpIHdpdGhcbiAgfCBSX29jYW1sLk5vVmFsdWVQcm92aWRlZCBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJObyBydWxlIGFwcGxpZXMgaW4gdGhlIGdpdmVuIGNvbnRleHQgdG8gZ2l2ZSBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQ29uZmxpY3RFcnJvciBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJBIGNvbmZsaWN0IGhhcHBlbmVkIGJldHdlZW4gdHdvIHJ1bGVzIGdpdmluZyBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQXNzZXJ0aW9uRmFpbGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yIFwiQSBmYWlsdXJlIGhhcHBlbmVkIGluIHRoZSBhc3NlcnRpb25cIiBwb3NcbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNvbXB0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBDb21wbGV0ZSBvZiB1bml0XG4gICAgfCBQYXJ0YWdlZSBvZiB1bml0XG4gICAgfCBaZXJvIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY29tcHRlICh4OiBQcmlzZUVuQ29tcHRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNvbXB0ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDb21wbGV0ZSB4IC0+IChcIkNvbXBsw6h0ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXJ0YWdlZSB4IC0+IChcIlBhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBaZXJvIHggLT4gKFwiWsOpcm9cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QWxsb2NhdGlvbnMgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTm9ybWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMgKHg6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVmVyc2VtZW50QWxsb2NhdGlvbnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9ybWFsIHggLT4gKFwiTm9ybWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zOiBkdXJhdGlvbn1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKHg6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSxcbiAgWyhcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5BbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ZlcnNlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudF92ZXJzw6lcIiwgZW1iZWRfbW9uZXkgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudF92ZXJzZSldKVxuXG5cbm1vZHVsZSBTbWljID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pYyAoeDogU21pYy50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY1wiXSxcbiAgWyhcImJydXRfaG9yYWlyZVwiLCBlbWJlZF9tb25leSB4LlNtaWMuYnJ1dF9ob3JhaXJlKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtpX21vbnRhbnRfdmVyc2U6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaV9tb250YW50X3ZlcnPDqVwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLmlfbW9udGFudF92ZXJzZSldKVxuXG5cbm1vZHVsZSBFbmZhbnRFbnRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRfaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkX2RhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGRfcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9lbnRyZWUgKHg6IEVuZmFudEVudHJlZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50RW50csOpZVwiXSxcbiAgWyhcImRfaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50RW50cmVlLmRfaWRlbnRpZmlhbnQpO1xuICAgIChcImRfcsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEVudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRfZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50RW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJkX2FfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkX2LDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHByaXNlX2VuX2NoYXJnZTogUHJpc2VFbkNoYXJnZS50O1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudCAoeDogRW5mYW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJFbmZhbnRcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnQuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50LnByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJiw6luw6lmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bGVfcGx1c19hZ2U6IEVuZmFudC50fVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlICh4OiBFbmZhbnRMZVBsdXNBZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpXCJdLFxuICBbKFwibGVfcGx1c1/DomfDqVwiLCBlbWJlZF9lbmZhbnQgeC5FbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UpXSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnQ6IEVuZmFudC50IC0+IGJvb2w7XG4gICAgY29uZGl0aW9uc19ob3JzX2FnZTogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBhZ2VfbDUxMl8zXzI6IGR1cmF0aW9uO1xuICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiZHJvaXRfb3V2ZXJ0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMik7XG4gICAgKFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gKF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBydW50aW1lX3ZhbHVlID0gVW5pdFxuXG5cbm1vZHVsZSBFbmZhbnRMZVBsdXNBZ2VJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZW5mYW50c19pbjogRW5mYW50LnQgYXJyYXl9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4gKHg6IEVuZmFudExlUGx1c0FnZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9pblwiXSxcbiAgWyhcImVuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkgeC5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZW5mYW50c19hX2NoYXJnZV9pbjogRW5mYW50LnQgYXJyYXk7XG4gICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZW5mYW50c1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudClcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4pO1xuICAgIChcImF2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cbm1vZHVsZSBTbWljSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGU7IHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9zbWljX2luICh4OiBTbWljSW4udCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZSB4LlNtaWNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaV9kYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGlfZW5mYW50c19pbjogRW5mYW50RW50cmVlLnQgYXJyYXk7XG4gICAgaV9yZXNzb3VyY2VzX21lbmFnZV9pbjogbW9uZXk7XG4gICAgaV9yZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW46IGJvb2w7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJpX2RhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJpX2VuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudF9lbnRyZWUpXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4pO1xuICAgIChcImlfcmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luKTtcbiAgICAoXCJpX3LDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbik7XG4gICAgKFwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luKTtcbiAgICAoXCJpX2F2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxuXG5cbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gIGxldCBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7QWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX31cblxubGV0IGVuZmFudF9sZV9wbHVzX2FnZSAoZW5mYW50X2xlX3BsdXNfYWdlX2luOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IEVuZmFudExlUGx1c0FnZS50ID1cbiAgbGV0IGVuZmFudHNfOiBFbmZhbnQudCBhcnJheSA9IGVuZmFudF9sZV9wbHVzX2FnZV9pbi5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luIGluXG4gIGxldCBsZV9wbHVzX2FnZV86IEVuZmFudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiRW5mYW50TGVQbHVzw4Jnw6lcIjsgXCJsZV9wbHVzX8OiZ8OpXCJdIChlbWJlZF9lbmZhbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHBvdGVudGllbF9wbHVzX2FnZV8xXzogRW5mYW50LnQpXG4gICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfMl86IEVuZmFudC50KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgKGxldCBwb3RlbnRpZWxfcGx1c19hZ2VfIDogRW5mYW50LnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xX1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzJfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xXyBlbHNlIHBvdGVudGllbF9wbHVzX2FnZV8yXylcbiAgICAgICAgICAgICAgKHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCItMVwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyOTk5KSAoMTIpICgzMSkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlfSkgZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7RW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlID0gbGVfcGx1c19hZ2VffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pYy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTA3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWMuYnJ1dF9ob3JhaXJlID0gYnJ1dF9ob3JhaXJlX31cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gbWluaXN0w6lyaWVsbGUgTsKwRFNTL1NEMkIvMjAxOS82NSBkdSAyNSBtYXJzIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMTkgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzE2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG5vIERTUy9TRDJCLzIwMjAvMzMgZHUgMTggZsOpdnJpZXIgMjAyMCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMCBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMS82NSBkdSAxOSBtYXJzIDIwMjEgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjEgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0ODFcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjIvODIgZHUgMjggbWFycyAyMDIyIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIyIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjI4XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBhZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IFNtaWMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICAoe1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFNtaWNJbi5yZXNpZGVuY2VfaW4gPSBzbWljX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWMuYnJ1dF9ob3JhaXJlIGluXG4gIGxldCByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbDUxMl8zXzJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9hdXRyZXNfY29kZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBSw6hnbGVzIGRlIG5vbi1jdW11bFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IFByaW5jaXBlcyBnw6luw6lyYXV4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCA9IGRyb2l0X291dmVydF87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlID0gY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgPSBhZ2VfbDUxMl8zXzJfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgPSByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV99XG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gaW5cbiAgbGV0IHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gaW5cbiAgbGV0IHByaXNlX2VuX2NvbXB0ZV86IEVuZmFudC50IC0+IFByaXNlRW5Db21wdGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA1OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgdmVyc2VtZW50XzogRW5mYW50LnQgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjYwOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwOTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX2VuZmFudHNfbDUyMV8xXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9lbmZhbnRzX2w1MjFfMVwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM186IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfZW5mYW50c19hbGluw6lhXzJfbDUyMV8zXCJdXG4gICAgKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHJlc3VsdF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2lvbl9hdnJpbF8yMDA4XCI7XG4gICAgICBcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzaW9uX2F2cmlsXzIwMDhcIjtcbiAgICAgIFwiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOClcbiAgICAoKCkpKSkgaW5cbiAgbGV0IHZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogZHVyYXRpb24gPSByZXN1bHRfLkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyBpblxuICBsZXQgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZi5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmXCI7IFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmXCI7IFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGJtYWZfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgYm1hZl9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucsOpc2lkZW5jZVwiXVxuICAgICAgKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7UHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpLmVuZmFudHNcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGVuZmFudHNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbmZhbnRMZVBsdXNBZ2UudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcIkVuZmFudExlUGx1c8OCZ8OpXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICBlbmZhbnRfbGVfcGx1c19hZ2UpXG4gICAgKHtFbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luID0gZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzX30pKSkgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IHJlc3VsdF8uRW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlIGluXG4gIGxldCBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBFbmZhbnQudCAtPiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgzOyBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDE0KSAoMCkgKDApKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiZW5mYW50c1/DoF9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSBlbmZhbnRzX2FfY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG9fZXEgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV8gZW5mYW50XykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX19pX2lfZDUyMV8zXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwbGFmb25kX0lJX2Q1MjFfM1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGludGVybWluaXN0w6lyaWVsbGUgTsKwIERTUy9TRDJCLzIwMTcvMzUyIGR1IDIyIGTDqWNlbWJyZSAyMDE3IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMTggZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODc3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk1NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3RlcmllbGxlIG5vIERTUy9TRDJCLzIwMTkvMjYxIGR1IDE4IGTDqWNlbWJyZSAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMjAgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Nzc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxNCBkw6ljZW1icmUgMjAyMCByZWxhdGlmIGF1IG1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgYXV4IHRyYW5jaGVzIGR1IGJhcsOobWUgYXBwbGljYWJsZSBhdSByZWNvdXZyZW1lbnQgZGVzIGluZHVzIGV0IMOgIGxhIHNhaXNpZSBkZXMgcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxNTU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODMwMDAwXCIpXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0ZXJpZWxsZSBubyBEU1MvU0QyQi8yMDE5LzI2MSBkdSAxOCBkw6ljZW1icmUgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDIwIGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9jb21wbGVtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9jb21wbMOpbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMwOyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjQ7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTUtMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgKG9fbGVuZ3RoIGVuZmFudHNfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZHVyX2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDApICgzNjUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpw6htZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfbWF5b3R0ZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDQ2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDYxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Nzk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOTE4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNDNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfdG90YWxfZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfdG90YWxfZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgIChvX2xlbmd0aCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX21veWVuX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX21veWVuX2VuZmFudHNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3JlZHVjZVxuICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMzkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODg7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTA1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5NzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzE3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTcyOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjsgc3RhcnRfY29sdW1uPTI5OyBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9iYXNlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9iYXNlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudF8pKSkpKSkpKSBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX2R1cmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29tcGxlbWVudF9kZWdyZXNzaWZfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY2OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc1OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhbGxvY2F0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAxMTdcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MDU5XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfZXRfcGx1c1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+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+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV90b3RhbF9lbmZhbnRzXyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgdGhlblxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IG5vbWJyZV9tb3llbl9lbmZhbnRzXyBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF9cbiAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU3OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9tYXlvdHRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfXG4gICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxMSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1NjdcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfZm9yZmFpdGFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfZm9yZmFpdGFpcmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX2Jhc2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdCBtb250YW50X2luaXRpYWxfYmFzZV8gcmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ByaXNlX2VuX2NvbXB0ZSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHByaXNlX2VuX2NvbXB0ZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuWmVybyBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlbiBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV9cbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogbW9uZXkpIChzdW0yXzogbW9uZXkpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gc3VtMV8gc3VtMl8pIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2Jhc2VfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4OTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIG1vbnRhbnRfdmVyc2VfYmFzZV8gbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9jb21wbGVtZW50XyB0aGVuXG4gICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRfZGVncmVzc2lmXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+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+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU1pbmltdW1BbGluZWExTDUyMTM6XG4gICAgICBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU1pbmltdW1BbGluZWExTDUyMTMgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSA6XG4gICAgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gICAge1xuICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgjIy5hZ2VNaW5pbXVtQWxpbmVhMUw1MjEzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlNb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpX21vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMjIy5pTW9udGFudFZlcnNlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9lbnRyZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZElkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGREYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2VudHJlZV90b19qc29vIChlbmZhbnRfZW50cmVlIDogRW5mYW50RW50cmVlLnQpXG4gICAgOiBlbmZhbnRfZW50cmVlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRJZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9lbnRyZWUuZF9pZGVudGlmaWFudFxuICAgICAgdmFsIGRSZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2VudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkRGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gZW5mYW50X2VudHJlZS5kX3ByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfb2ZfanNvbyAoZW5mYW50X2VudHJlZSA6IGVuZmFudF9lbnRyZWUgSnMudCkgOlxuICAgIEVuZmFudEVudHJlZS50ID1cbiAgICB7XG4gICAgICBkX2lkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2VudHJlZSMjLmRJZGVudGlmaWFudDtcbiAgICAgIGRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfZW50cmVlIyMuZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2VudHJlZSMjLmREYXRlRGVOYWlzc2FuY2U7XG4gICAgICBkX3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kUHJpc2VFbkNoYXJnZTtcbiAgICAgIGRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2VudHJlZSMjLmRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9IHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudC5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X29mX2pzb28gKGVuZmFudCA6IGVuZmFudCBKcy50KSA6IEVuZmFudC50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudCMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb28gZW5mYW50IyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnQjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnQjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnQjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfbGVfcGx1c19hZ2UgPVxuICBvYmplY3QgbWV0aG9kIGxlUGx1c0FnZTogZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2UgOiBFbmZhbnRMZVBsdXNBZ2UudClcbiAgICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsZVBsdXNBZ2UgPSBlbmZhbnRfdG9fanNvbyBlbmZhbnRfbGVfcGx1c19hZ2UubGVfcGx1c19hZ2VcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICAgIHtsZV9wbHVzX2FnZSA9IGVuZmFudF9vZl9qc29vIGVuZmFudF9sZV9wbHVzX2FnZSMjLmxlUGx1c0FnZVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OlxuICAgICAgKHVuaXQsICBlbmZhbnQgSnMudCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZTpcbiAgICAgICh1bml0LCAgZW5mYW50IEpzLnQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVnaW1lT3V0cmVNZXJMNzUxMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgZHJvaXRPdXZlcnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudCBKcy50KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IChlbmZhbnRfb2ZfanNvb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2UgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudCBKcy50KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSAoZW5mYW50X29mX2pzb29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIHZhbCBhZ2VMNTEyMzIgPSBkdXJhdGlvbl90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yXG4gICAgICB2YWwgcmVnaW1lT3V0cmVNZXJMNzUxMSA9XG4gICAgICAgIEpzLmJvb2wgcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMVxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBkcm9pdF9vdXZlcnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnZHJvaXRfb3V2ZXJ0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb25kaXRpb25zX2hvcnNfYWdlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbnNfaG9yc19hZ2UnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGFnZV9sNTEyXzNfMiA9IGR1cmF0aW9uX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmFnZUw1MTIzMjtcbiAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID1cbiAgICAgICAgSnMudG9fYm9vbCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucmVnaW1lT3V0cmVNZXJMNzUxMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gPVxub2JqZWN0IGVuZFxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fdG9fanNvbyAoXyA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQgPSBvYmplY3QlanMgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl9vZl9qc29vIChfIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50KSA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCA9ICgpXG5jbGFzcyB0eXBlIGVuZmFudF9sZV9wbHVzX2FnZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZW5mYW50c0luOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyAoZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF90b19qc29vIHgpIGVuZmFudF9sZV9wbHVzX2FnZV9pbi5lbmZhbnRzX2luXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gICAgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlSW4udCA9XG4gICAge1xuICAgICAgZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbmZhbnRfbGVfcGx1c19hZ2VfaW4jIy5lbmZhbnRzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRzQUNoYXJnZUluOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgZW5mYW50c0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5lbmZhbnRzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLnBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZW5mYW50c19hX2NoYXJnZV9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZW5mYW50c0FDaGFyZ2VJbjtcbiAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5hdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgaURhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlFbmZhbnRzSW46IGVuZmFudF9lbnRyZWUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpRGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgaUVuZmFudHNJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X2VudHJlZV90b19qc29vIHgpIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfZW5mYW50c19pblxuICAgICAgdmFsIGlSZXNzb3VyY2VzTWVuYWdlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9yZXNzb3VyY2VzX21lbmFnZV9pblxuICAgICAgdmFsIGlSZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcmVzaWRlbmNlX2luXG4gICAgICB2YWwgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXG4gICAgICB2YWwgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblxuICAgICAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBpX2RhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pRGF0ZUNvdXJhbnRlSW47XG4gICAgICBpX2VuZmFudHNfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9lbnRyZWVfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaUVuZmFudHNJbjtcbiAgICAgIGlfcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pUmVzc291cmNlc01lbmFnZUluO1xuICAgICAgaV9yZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaVJlc2lkZW5jZUluO1xuICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjtcbiAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW47XG4gICAgICBpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJblxuICAgIH1cblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhcbiAgKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpXG4gIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50ID1cbiAgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pblxuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb29cbiAgfD4gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cblxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudClcbiAgOiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCA9XG4gIGVuZmFudF9sZV9wbHVzX2FnZV9pblxuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvb1xuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VcbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4IDogKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCAtPiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbmZhbnRMZVBsdXNBZ2UgOiAoZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgLT4gZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbmZhbnRfbGVfcGx1c19hZ2VcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+IHNtaWMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIHByZXN0YXRpb25zRmFtaWxpYWxlcyA6IChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgYWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgIGVuZCkiLCIoKiogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBkbyBub3QgZWRpdCEgKilcblxub3BlbiBSdW50aW1lX29jYW1sLlJ1bnRpbWVcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItNC0yNi0yNy0zMi00MS00MlwiXVxuXG5tb2R1bGUgVHlwZVByZXQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRDMzMV8zMiBvZiB1bml0XG4gICAgfCBEMzMxXzYzXzY0IG9mIHVuaXRcbiAgICB8IEQzMzFfNTlfOCBvZiB1bml0XG4gICAgfCBEMzMxXzc2XzEgb2YgdW5pdFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3ByZXQgKHg6IFR5cGVQcmV0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVByw6p0XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEQzMzFfMzIgeCAtPiAoXCJEMzMxXzMyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNjNfNjQgeCAtPiAoXCJEMzMxXzYzXzY0XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNTlfOCB4IC0+IChcIkQzMzFfNTlfOFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzc2XzEgeCAtPiAoXCJEMzMxXzc2XzFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUaXR1bGFpcmVQcmV0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERlbWFuZGV1ciBvZiB1bml0XG4gICAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdGl0dWxhaXJlX3ByZXQgKHg6IFRpdHVsYWlyZVByZXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUaXR1bGFpcmVQcsOqdFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEZW1hbmRldXIgeCAtPiAoXCJEZW1hbmRldXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiB4IC0+XG4gICAgICAoXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBvZiB1bml0XG4gICAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIG9mIHVuaXRcbiAgICB8IFBhc0RlVHJhdmF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ICh4OiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzJfMTVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSB4IC0+XG4gICAgICAoXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgeCAtPlxuICAgICAgKFwiVHJhdmF1eFN1ckxvZ2VtZW50RMOpasOgQWNxdWlzRDgzMl8xNV8yXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhc0RlVHJhdmF1eCB4IC0+IChcIlBhc0RlVHJhdmF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IG9mIHVuaXRcbiAgICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIG9mIHVuaXRcbiAgICB8IFBhc0RlVHJhdmF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgKHg6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVUcmF2YXV4TG9nZW1lbnRSODQyXzVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgeCAtPiAoXCJPYmplY3RpZkTDqWNlbmNlTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IHggLT4gKFwiUHLDqXZ1RGFuc0xpc3RlUjMyMV8xNVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyB4IC0+XG4gICAgICAoXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXNEZVRyYXZhdXggeCAtPiAoXCJQYXNEZVRyYXZhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQW1lbGlvcmVQYXJPY2N1cGFudCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBPdWkgb2YgdW5pdFxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfYW1lbGlvcmVfcGFyX29jY3VwYW50ICh4OiBBbWVsaW9yZVBhck9jY3VwYW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQW3DqWxpb3LDqVBhck9jY3VwYW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE91aSB4IC0+IChcIk91aVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTGltaXRlVHJhbmNoZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBSZXZlbnUgb2YgbW9uZXlcbiAgICB8IEluZmluaSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2xpbWl0ZV90cmFuY2hlICh4OiBMaW1pdGVUcmFuY2hlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTGltaXRlVHJhbmNoZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBSZXZlbnUgeCAtPiAoXCJSZXZlbnVcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IEluZmluaSB4IC0+IChcIkluZmluaVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMaW1pdGVUcmFuY2hlRGVjaW1hbCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBSZXZlbnUgb2YgZGVjaW1hbFxuICAgIHwgSW5maW5pIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCAoeDogTGltaXRlVHJhbmNoZURlY2ltYWwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMaW1pdGVUcmFuY2hlRMOpY2ltYWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUmV2ZW51IHggLT4gKFwiUmV2ZW51XCIsIGVtYmVkX2RlY2ltYWwgeClcbiAgICB8IEluZmluaSB4IC0+IChcIkluZmluaVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uUmVjdWUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIG9mIHVuaXRcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSAoeDogUHJlc3RhdGlvblJlY3VlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJlc3RhdGlvblJlw6d1ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgeCAtPiAoXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFBhcmVudE91QXV0cmUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIG9mIGRlY2ltYWxcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFyZW50X291X2F1dHJlICh4OiBQYXJlbnRPdUF1dHJlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFyZW50T3VBdXRyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgeCAtPlxuICAgICAgKFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2nDqXTDqXNcIiwgZW1iZWRfZGVjaW1hbCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25HYXJkZUFsdGVybmVlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFBhc0RlR2FyZGVBbHRlcm5lZSBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIG9mIGRlY2ltYWxcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlICh4OiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uR2FyZGVBbHRlcm7DqWVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGFzRGVHYXJkZUFsdGVybmVlIHggLT4gKFwiUGFzRGVHYXJkZUFsdGVybsOpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIsIGVtYmVkX2RlY2ltYWwgeCkpXG5cblxubW9kdWxlIFBhcmVudGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQXNjZW5kYW50IG9mIHVuaXRcbiAgICB8IERlc2NlbmRhbnQgb2YgdW5pdFxuICAgIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYXJlbnRlICh4OiBQYXJlbnRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFyZW50w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQXNjZW5kYW50IHggLT4gKFwiQXNjZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IERlc2NlbmRhbnQgeCAtPiAoXCJEZXNjZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIHggLT5cbiAgICAgIChcIkNvbGxhdMOpcmFsRGV1eGnDqG1lVHJvaXNpw6htZURlZ3LDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEYXRlRGVOYWlzc2FuY2Ugb2YgZGF0ZVxuICAgIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBvZiB1bml0XG4gICAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VcbiAgKHg6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGF0ZURlTmFpc3NhbmNlIHggLT4gKFwiRGF0ZURlTmFpc3NhbmNlXCIsIGVtYmVkX2RhdGUgeClcbiAgICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgeCAtPlxuICAgICAgKFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzacOobWVNb2lzRGVHcm9zc2Vzc2VcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSB4IC0+XG4gICAgICAoXCJBcHLDqHNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzacOobWVNb2lzRGVHcm9zc2Vzc2VcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgWm9uZURIYWJpdGF0aW9uID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFpvbmUxIG9mIHVuaXRcbiAgICB8IFpvbmUyIG9mIHVuaXRcbiAgICB8IFpvbmUzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfem9uZV9kX2hhYml0YXRpb24gKHg6IFpvbmVESGFiaXRhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlpvbmVESGFiaXRhdGlvblwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBab25lMSB4IC0+IChcIlpvbmUxXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFpvbmUyIHggLT4gKFwiWm9uZTJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTMgeCAtPiAoXCJab25lM1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBvZiBtb25leVxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAoeDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIHggLT4gKFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1ciBvZiB1bml0XG4gICAgfCBCZW5lZmljaWFpcmUgb2YgdW5pdFxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2EgKHg6IFZlcnNlbWVudEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnTDgFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBCYWlsbGV1ciB4IC0+IChcIkJhaWxsZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEJlbmVmaWNpYWlyZSB4IC0+IChcIkLDqW7DqWZpY2lhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSB4IC0+IChcIsOJdGFibGlzc2VtZW50SGFiaWxpdMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBvZiBtb25leVxuICAgIHwgTWVuc3VhbGl0ZSBvZiBtb25leVxuICAgIHwgTG95ZXIgb2YgbW9uZXlcbiAgZW5kXG5sZXQgZW1iZWRfZGVwZW5zZV9sb2dlbWVudCAoeDogRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyB4IC0+IChcIlRvdGFsQW5udWVsw4ljaMOpYW5jZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE1lbnN1YWxpdGUgeCAtPiAoXCJNZW5zdWFsaXTDqVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTG95ZXIgeCAtPiAoXCJMb3llclwiLCBlbWJlZF9tb25leSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb25JbXBheWUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgSW1wYXllTG95ZXIgb2YgdW5pdFxuICAgIHwgSW1wYXllUHJldCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUgKHg6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTW9kZU9jY3VwYXRpb25JbXBhecOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEltcGF5ZUxveWVyIHggLT4gKFwiSW1wYXnDqUxveWVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEltcGF5ZVByZXQgeCAtPiAoXCJJbXBhecOpUHLDqnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFBhc0VsaWdpYmxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICh4OiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQYXNFbGlnaWJsZSB4IC0+IChcIlBhc8OJbGlnaWJsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ICh4OiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IHggLT5cbiAgICAgIChcIkFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBDZWxpYmF0YWlyZSBvZiB1bml0XG4gICAgfCBNYXJpZXMgb2YgZGF0ZVxuICAgIHwgUGFjc2VzIG9mIHVuaXRcbiAgICB8IENvbmN1YmlucyBvZiB1bml0XG4gICAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBvZiB1bml0XG4gICAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlICh4OiBTaXR1YXRpb25GYW1pbGlhbGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ2VsaWJhdGFpcmUgeCAtPiAoXCJDw6lsaWJhdGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTWFyaWVzIHggLT4gKFwiTWFyacOpc1wiLCBlbWJlZF9kYXRlIHgpXG4gICAgfCBQYWNzZXMgeCAtPiAoXCJQYWNzw6lzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbmN1YmlucyB4IC0+IChcIkNvbmN1Ymluc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCB4IC0+XG4gICAgICAoXCJDw6lsaWJhdGFpcmVTw6lwYXLDqURlRmFpdFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgeCAtPlxuICAgICAgKFwiQ29uY3ViaW5hZ2VEb250U8OpcGFyw6lEZUZhaXRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2UgKHg6IFByaXNlRW5DaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIHggLT5cbiAgICAgIChcIlLDqXNpZGVuY2VBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgeCAtPlxuICAgICAgKFwiUsOpc2lkZW5jZUFsdGVybsOpZUFsbG9jYXRpb25zUGFydGFnw6llXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVMb2dlbWVudEZveWVyID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZVNvY2lhbGUgb2YgdW5pdFxuICAgIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgb2YgdW5pdFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyICh4OiBUeXBlTG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVMb2dlbWVudEZveWVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIHggLT5cbiAgICAgIChcIkxvZ2VtZW50UGVyc29ubmVzw4Jnw6llc091SGFuZGljYXDDqWVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZVNvY2lhbGUgeCAtPiAoXCJSw6lzaWRlbmNlU29jaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSB4IC0+XG4gICAgICAoXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uw6lMMzUzXzJBdmFudDE5OTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgb2YgdW5pdFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBvZiB1bml0XG4gICAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBvZiB1bml0XG4gICAgfCBBdXRyZXNQZXJzb25uZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoeDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2F0w6lnb3JpZcOJcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVDUk9VU1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIHggLT5cbiAgICAgIChcIsOJdHVkaWFudExvZ8OpRW5DaGFtYnJlQ1JPVVNSw6loYWJpbGl0w6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IHggLT5cbiAgICAgIChcIlBlcnNvbm5lc8OCZ8OpZXNTZWxvbjNEZUQ4NDJfMTZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmVzUGVyc29ubmVzIHggLT4gKFwiQXV0cmVzUGVyc29ubmVzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBQZXJzb25uZVNldWxlIG9mIHVuaXRcbiAgICB8IENvdXBsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sICh4OiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGVyc29ubmVTZXVsZSB4IC0+IChcIlBlcnNvbm5lU2V1bGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ291cGxlIHggLT4gKFwiQ291cGxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlRW5mYW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCAoeDogUHJpc2VFbkNoYXJnZUVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZVBhcnRhZ2VBbGxvY2F0aW9uc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWXDgExhRmFtaWxsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBdmFudCBvZiB1bml0XG4gICAgfCBQZW5kYW50IG9mIHVuaXRcbiAgICB8IEFwcmVzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgKHg6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdmFudCB4IC0+IChcIkF2YW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlbmRhbnQgeCAtPiAoXCJQZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzIHggLT4gKFwiQXByw6hzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbMOpbWVudFByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IHggLT5cbiAgICAgIChcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IHggLT4gKFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbsOJZHVjYXRpb25FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25SZW50csOpZVNjb2xhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Kb3VybmFsacOocmVQcmVzZW5jZVBhcmVudGFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWU6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsICh4OiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbFwiXSxcbiAgWyhcImNvbnZlbnRpb25uw6lfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9wZXLDp3VlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKV0pXG5cblxubW9kdWxlIENvbnZlbnRpb25BTkhBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX0lJX2NoYXBfSV9zZWNfMzogYm9vbH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSAoeDogQ29udmVudGlvbkFOSEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25BTkhBXCJdLFxuICBbKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKV0pXG5cblxubW9kdWxlIFBlcnNvbm5lU291c0xvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uOiBkYXRlO1xuICAgIGNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gKHg6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQZXJzb25uZVNvdXNMb2NhdGlvblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cIiwgZW1iZWRfZGF0ZVxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbik7XG4gICAgKFwiY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpXSlcblxuXG5tb2R1bGUgUGF0cmltb2luZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQ6IG1vbmV5O1xuICAgIG5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNDogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGF0cmltb2luZSAoeDogUGF0cmltb2luZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUGF0cmltb2luZVwiXSxcbiAgWyhcInByb2R1aXNhbnRfcmV2ZW51X3DDqXJpb2RlX3I4MjJfM18zX3I4MjJfNFwiLCBlbWJlZF9tb25leVxuICAgIHguUGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCk7XG4gICAgKFwibmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3DDqXJpb2RlX3I4MjJfM18zX3I4MjJfNFwiLCBlbWJlZF9tb25leVxuICAgIHguUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXSlcblxuXG5tb2R1bGUgQ29uZGl0aW9uc0V0cmFuZ2VycyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7c2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZTogYm9vbH1cbmVuZFxubGV0IGVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzICh4OiBDb25kaXRpb25zRXRyYW5nZXJzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDb25kaXRpb25zw4l0cmFuZ2Vyc1wiXSxcbiAgWyhcInNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3PDqWN1cml0w6lfc29jaWFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Db25kaXRpb25zRXRyYW5nZXJzLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGUpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pczogYm9vbDtcbiAgICByZXNzb3VyY2VzOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9wZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgKHg6IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llclwiXSxcbiAgWyhcImR1csOpZV9yw6lzaWRlbmNlX2R1cmFudF9ww6lyaW9kZV9yXzgyMl8zXzFfc3Vww6lyaWV1cmVfw6BfNl9tb2lzXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIuZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzKTtcbiAgICAoXCJyZXNzb3VyY2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZTogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSk7XG4gICAgKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIl0sXG4gIFsoXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50XCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQpXSlcblxuXG5tb2R1bGUgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7cmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQucmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXkgLT4gbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTY6IG1vbmV5O1xuICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yOiBtb25leTtcbiAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlOiBtb25leTtcbiAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZTogZGVjaW1hbDtcbiAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlOiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl0sXG4gIFsoXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYpO1xuICAgIChcInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMik7XG4gICAgKFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSk7XG4gICAgKFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgIChcInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgKHg6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bl9ub21icmVfcGFydHNfZDgzMl8yNTogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNTogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcl9kODMyXzI1OiBtb25leTtcbiAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1OiBkZWNpbWFsO1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlOiBtb25leTtcbiAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlOiBtb25leTtcbiAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZTogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjU6IGRlY2ltYWw7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdLFxuICBbKFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUpO1xuICAgIChcImNvZWZmaWNpZW50X3JfZDgzMl8yNVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSk7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlKTtcbiAgICAoXCJwbGFmb25kX8OpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlKTtcbiAgICAoXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzExOiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlICh4OiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5zdWFsaXRlX2VsaWdpYmxlOiBtb25leTtcbiAgICBtZW5zdWFsaXRlX21pbmltYWxlOiBtb25leTtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMDogZGVjaW1hbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSk7XG4gICAgKFwibWVuc3VhbGl0w6lfbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMCk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlICh4OiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZVwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYW5jaWVuX2xveWVyX3ByaW5jaXBhbDogbW9uZXk7XG4gICAgYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudDogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgKHg6IEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0Ml80XCJdLFxuICBbKFwiYW5jaWVuX2xveWVyX3ByaW5jaXBhbFwiLCBlbWJlZF9tb25leVxuICAgIHguSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKTtcbiAgICAoXCJhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50XCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2U6IGRlY2ltYWw7XG4gICAgZXF1aXZhbGVuY2VfbG95ZXI6IG1vbmV5O1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlczogbW9uZXk7XG4gICAgbG95ZXJfbWluaW1hbDogbW9uZXk7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSxcbiAgWyhcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llclwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgIChcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzKTtcbiAgICAoXCJsb3llcl9taW5pbWFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2FnZV9vdXZlcnR1cmVfZHJvaXQ6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSAoeDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCJdLFxuICBbKFwiw6JnZV9vdXZlcnR1cmVfZHJvaXRcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXQpXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X2ltcGF5ZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoeDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRfaW1wYXnDqVwiLCBlbWJlZF9tb25leSB4LkltcGF5ZURlcGVuc2VMb2dlbWVudC5tb250YW50X2ltcGF5ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leTtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGU6IGJvb2w7IGFpZGVfZmluYWxlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmVsaWdpYmlsaXRlKTtcbiAgICAoXCJhaWRlX2ZpbmFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCldKVxuXG5cbm1vZHVsZSBTbWljID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pYyAoeDogU21pYy50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY1wiXSxcbiAgWyhcImJydXRfaG9yYWlyZVwiLCBlbWJlZF9tb25leSB4LlNtaWMuYnJ1dF9ob3JhaXJlKV0pXG5cblxubW9kdWxlIFByZXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfcHJldDogVHlwZVByZXQudDtcbiAgICBkYXRlX3NpZ25hdHVyZTogZGF0ZTtcbiAgICB0aXR1bGFpcmVfcHJldDogVGl0dWxhaXJlUHJldC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXQgKHg6IFByZXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlByw6p0XCJdLFxuICBbKFwidHlwZV9wcsOqdFwiLCBlbWJlZF90eXBlX3ByZXQgeC5QcmV0LnR5cGVfcHJldCk7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVcIiwgZW1iZWRfZGF0ZSB4LlByZXQuZGF0ZV9zaWduYXR1cmUpO1xuICAgIChcInRpdHVsYWlyZV9wcsOqdFwiLCBlbWJlZF90aXR1bGFpcmVfcHJldCB4LlByZXQudGl0dWxhaXJlX3ByZXQpXSlcblxuXG5tb2R1bGUgTmV1Zk91QW5jaWVuID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5ldWYgb2YgdW5pdFxuICAgIHwgQW5jaWVuIG9mIEFtZWxpb3JlUGFyT2NjdXBhbnQudFxuICBlbmRcbmxldCBlbWJlZF9uZXVmX291X2FuY2llbiAoeDogTmV1Zk91QW5jaWVuLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTmV1Zk91QW5jaWVuXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5ldWYgeCAtPiAoXCJOZXVmXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFuY2llbiB4IC0+IChcIkFuY2llblwiLCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgeCkpXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2hhdXQ6IExpbWl0ZVRyYW5jaGUudDsgYmFzOiBtb25leTsgdGF1eDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX3RyYW5jaGVfcmV2ZW51ICh4OiBUcmFuY2hlUmV2ZW51LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFuY2hlUmV2ZW51XCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZSB4LlRyYW5jaGVSZXZlbnUuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX21vbmV5IHguVHJhbmNoZVJldmVudS5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnUudGF1eCldKVxuXG5cbm1vZHVsZSBUcmFuY2hlUmV2ZW51RGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZURlY2ltYWwudDsgYmFzOiBkZWNpbWFsOyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCAoeDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVEw6ljaW1hbFwiXSxcbiAgWyhcImhhdXRcIiwgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpO1xuICAgIChcImJhc1wiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKTtcbiAgICAoXCJ0YXV4XCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KV0pXG5cblxubW9kdWxlIEF1dHJlUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZXNzb3VyY2VzOiBtb25leTtcbiAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZTogYm9vbDtcbiAgICBwYXJlbnRlOiBQYXJlbnRlLnQ7XG4gICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2k6IGJvb2w7XG4gICAgYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1OiBib29sO1xuICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcyk7XG4gICAgKFwiYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0w6lyYWxfZGV1eGnDqG1lX3Ryb2lzacOobWVfZGVncsOpXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpO1xuICAgIChcInBhcmVudMOpXCIsIGVtYmVkX3BhcmVudGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpO1xuICAgIChcImluY2FwYWNpdMOpXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVwiLCBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3PDqWN1XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSk7XG4gICAgKFwidGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfw6Jnw6llXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXSlcblxuXG5tb2R1bGUgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBvZiB1bml0XG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgb2YgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAoeDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlTmFpc3NhbmNlVHJvaXNpw6htZU91RGVybmllclBsdXNFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyB4IC0+IChcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGx1c0RlVHJvaXNFbmZhbnRzIHggLT5cbiAgICAgIChcIlBsdXNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIExvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfdXNlcjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMTogYm9vbDtcbiAgICBjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUk6IGJvb2w7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50OiBkYXRlO1xuICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUk6IGJvb2w7XG4gICAgcmVkZXZhbmNlOiBtb25leTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvZ2VtZW50X2ZveWVyICh4OiBMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJMb2dlbWVudEZveWVyXCJdLFxuICBbKFwidHlwZVwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcik7XG4gICAgKFwicmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSk7XG4gICAgKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KTtcbiAgICAoXCJjb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSk7XG4gICAgKFwicmVkZXZhbmNlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSk7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNlwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2KV0pXG5cblxubW9kdWxlIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50XG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgRW5mYW50QUNoYXJnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sO1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2FfY2hhcmdlICh4OiBFbmZhbnRBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnTDgENoYXJnZVwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInNpdHVhdGlvbl9nYXJkZV9hbHRlcm7DqWVcIiwgZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSldKVxuXG5cbm1vZHVsZSBUeXBlQmFpbGxldXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQmFpbGxldXJTb2NpYWwgb2YgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnRcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBvZiBDb252ZW50aW9uQU5IQS50XG4gICAgfCBCYWlsbGV1clByaXZlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9iYWlsbGV1ciAoeDogVHlwZUJhaWxsZXVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUJhaWxsZXVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyU29jaWFsIHggLT5cbiAgICAgIChcIkJhaWxsZXVyU29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIHgpXG4gICAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJQcml2w6lBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbFwiLCBlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EgeClcbiAgICB8IEJhaWxsZXVyUHJpdmUgeCAtPiAoXCJCYWlsbGV1clByaXbDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycyA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBOb24gb2YgdW5pdFxuICAgIHwgT3VpIG9mIFBlcnNvbm5lU291c0xvY2F0aW9uLnRcbiAgZW5kXG5sZXQgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgKHg6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTG91w6lPdVNvdXNMb3XDqcOARGVzVGllcnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE91aSB4IC0+IChcIk91aVwiLCBlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIHgpKVxuXG5cbm1vZHVsZSBOYXRpb25hbGl0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBGcmFuY2Fpc2Ugb2YgdW5pdFxuICAgIHwgRXRyYW5nZXJlIG9mIENvbmRpdGlvbnNFdHJhbmdlcnMudFxuICBlbmRcbmxldCBlbWJlZF9uYXRpb25hbGl0ZSAoeDogTmF0aW9uYWxpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOYXRpb25hbGl0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRnJhbmNhaXNlIHggLT4gKFwiRnJhbsOnYWlzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHJhbmdlcmUgeCAtPiAoXCLDiXRyYW5nw6hyZVwiLCBlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyB4KSlcblxuXG5tb2R1bGUgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2hhbmdlbWVudCBvZiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ICh4OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNoYW5nZW1lbnRMb2dlbWVudEQ4NDJfNFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDaGFuZ2VtZW50IHggLT5cbiAgICAgIChcIkNoYW5nZW1lbnRcIiwgZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgeClcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCB4IC0+IChcIlBhc0RlQ2hhbmdlbWVudFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcm9wcmlldGFpcmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMjogYm9vbDtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGU6IG1vbmV5O1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0OiBtb25leTtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudDogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNTogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50O1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzU6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZTogYm9vbDtcbiAgICBjb3Byb3ByaWV0ZTogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xNzogYm9vbDtcbiAgICBhbmNpZW5uZXRlX2xvZ2VtZW50OiBOZXVmT3VBbmNpZW4udDtcbiAgICBwcmV0OiBQcmV0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJvcHJpZXRhaXJlICh4OiBQcm9wcmlldGFpcmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlByb3ByacOpdGFpcmVcIl0sXG4gIFsoXCJsb2dlbWVudF9zaXR1w6lfY29tbXVuZV9kw6lzw6lxdWlsaWJyZV9sODMxXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLmxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMik7XG4gICAgKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSk7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudFwiLCBlbWJlZF9kYXRlXG4gICAgeC5Qcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgIHguUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSk7XG4gICAgKFwiY29wcm9wcmnDqXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNyk7XG4gICAgKFwiYW5jaWVubmV0w6lfbG9nZW1lbnRcIiwgZW1iZWRfbmV1Zl9vdV9hbmNpZW5cbiAgICB4LlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KTtcbiAgICAoXCJwcsOqdFwiLCBlbWJlZF9wcmV0IHguUHJvcHJpZXRhaXJlLnByZXQpXSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlOiBpbnRlZ2VyO1xuICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzOlxuICAgICAgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ICh4OiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNQcmltZURlRMOpbcOpbmFnZW1lbnRcIl0sXG4gIFsoXCJub21icmVfZW5mYW50c1/DoF9uYcOudHJlX2FwcsOoc190cm9pc2nDqG1lX21vaXNfZ3Jvc3Nlc3NlXCIsXG4gICAgZW1iZWRfaW50ZWdlclxuICAgIHguSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UpO1xuICAgIChcImRhdGVfbmFpc3NhbmNlX3Ryb2lzacOobWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1c1wiLFxuICAgIGVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50XG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnQ6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2w7XG4gICAgY29uZGl0aW9uc19ob3JzX2FnZTogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbDtcbiAgICBhZ2VfbDUxMl8zXzI6IGR1cmF0aW9uO1xuICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiZHJvaXRfb3V2ZXJ0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0KTtcbiAgICAoXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UpO1xuICAgIChcIsOiZ2VfbDUxMl8zXzJcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMik7XG4gICAgKFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xKV0pXG5cblxubW9kdWxlIFBlcnNvbm5lQUNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFbmZhbnRBQ2hhcmdlIG9mIEVuZmFudEFDaGFyZ2UudFxuICAgIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2Ugb2YgQXV0cmVQZXJzb25uZUFDaGFyZ2UudFxuICBlbmRcbmxldCBlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSAoeDogUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFbmZhbnRBQ2hhcmdlIHggLT4gKFwiRW5mYW50w4BDaGFyZ2VcIiwgZW1iZWRfZW5mYW50X2FfY2hhcmdlIHgpXG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSB4IC0+XG4gICAgICAoXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIiwgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgeCkpXG5cblxubW9kdWxlIERlbWFuZGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgbmF0aW9uYWxpdGU6IE5hdGlvbmFsaXRlLnQ7XG4gICAgcGF0cmltb2luZTogUGF0cmltb2luZS50O1xuICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZGVtYW5kZXVyICh4OiBEZW1hbmRldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkRlbWFuZGV1clwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGUgeC5EZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2UpO1xuICAgIChcIm5hdGlvbmFsaXTDqVwiLCBlbWJlZF9uYXRpb25hbGl0ZVxuICAgIHguRGVtYW5kZXVyLm5hdGlvbmFsaXRlKTtcbiAgICAoXCJwYXRyaW1vaW5lXCIsIGVtYmVkX3BhdHJpbW9pbmVcbiAgICB4LkRlbWFuZGV1ci5wYXRyaW1vaW5lKTtcbiAgICAoXCJwZXJzb25uZV9ow6liZXJnw6llX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3PDqWN1cml0w6lfc29jaWFsZVwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKV0pXG5cblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBiYWlsbGV1cjogVHlwZUJhaWxsZXVyLnQ7XG4gICAgbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXM6IGJvb2w7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmU6IGJvb2w7XG4gICAgY29sb2NhdGlvbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyczogYm9vbDtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yOiBib29sO1xuICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvY2F0aW9uICh4OiBMb2NhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiTG9jYXRpb25cIl0sXG4gIFsoXCJiYWlsbGV1clwiLCBlbWJlZF90eXBlX2JhaWxsZXVyIHguTG9jYXRpb24uYmFpbGxldXIpO1xuICAgIChcImxveWVyX3ByaW5jaXBhbFwiLCBlbWJlZF9tb25leVxuICAgIHguTG9jYXRpb24ubG95ZXJfcHJpbmNpcGFsKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSk7XG4gICAgKFwiY29sb2NhdGlvblwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5jb2xvY2F0aW9uKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpO1xuICAgIChcImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XCIsIGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgeC5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZTogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheTtcbiAgICBjb25kaXRpb25fMl9yODIzXzQ6IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlKTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpO1xuICAgIChcImNvbmRpdGlvbl8yX3I4MjNfNFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCldKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVDYWxjdWxBUEwgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRpb24gb2YgTG9jYXRpb24udFxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBMb2dlbWVudEZveWVyIG9mIExvZ2VtZW50Rm95ZXIudFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sICh4OiBDYXRlZ29yaWVDYWxjdWxBUEwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDYXTDqWdvcmllQ2FsY3VsQVBMXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0aW9uIHggLT4gKFwiTG9jYXRpb25cIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZSB4IC0+IChcIkFjY2Vzc2lvblByb3ByacOpdMOpXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgTG9nZW1lbnRGb3llciB4IC0+IChcIkxvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeCkpXG5cblxubW9kdWxlIE1vZGVPY2N1cGF0aW9uID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvY2F0YWlyZSBvZiBMb2NhdGlvbi50XG4gICAgfCBSZXNpZGVudExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBTb3VzTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIG9mIFByb3ByaWV0YWlyZS50XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbiAoeDogTW9kZU9jY3VwYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJNb2RlT2NjdXBhdGlvblwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2NhdGFpcmUgeCAtPiAoXCJMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciB4IC0+XG4gICAgICAoXCJSw6lzaWRlbnRMb2dlbWVudEZveWVyXCIsIGVtYmVkX2xvZ2VtZW50X2ZveWVyIHgpXG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHggLT5cbiAgICAgIChcIkFjY2Vzc2lvblByb3ByacOpdMOpTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiLCBlbWJlZF9wcm9wcmlldGFpcmUgeClcbiAgICB8IFNvdXNMb2NhdGFpcmUgeCAtPiAoXCJTb3VzTG9jYXRhaXJlXCIsIGVtYmVkX2xvY2F0aW9uIHgpXG4gICAgfCBMb2NhdGlvbkFjY2Vzc2lvbiB4IC0+IChcIkxvY2F0aW9uQWNjZXNzaW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KSlcblxuXG5tb2R1bGUgTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlOiBib29sO1xuICAgIGVzdF9laHBhZF9vdV9tYWlzb25fYXV0b25vbWllX2wzMTNfMTJfYXNmOiBib29sO1xuICAgIG1vZGVfb2NjdXBhdGlvbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBwcm9wcmlldGFpcmU6IFBhcmVudE91QXV0cmUudDtcbiAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyczogTG91ZU91U291c0xvdWVBRGVzVGllcnMudDtcbiAgICB1c3VmcnVpdDogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyOiBib29sO1xuICAgIHN1cmZhY2VfbV9jYXJyZXM6IGludGVnZXI7XG4gICAgem9uZTogWm9uZURIYWJpdGF0aW9uLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnQgKHg6IExvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2dlbWVudFwiXSxcbiAgWyhcInLDqXNpZGVuY2VfcHJpbmNpcGFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZSk7XG4gICAgKFwiZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2ZcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2YpO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbik7XG4gICAgKFwicHJvcHJpw6l0YWlyZVwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnByb3ByaWV0YWlyZSk7XG4gICAgKFwibG91w6lfb3Vfc291c19sb3XDqV/DoF9kZXNfdGllcnNcIiwgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICB4LkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKTtcbiAgICAoXCJ1c3VmcnVpdFwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnVzdWZydWl0KTtcbiAgICAoXCJsb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2Mik7XG4gICAgKFwic3VyZmFjZV9tX2NhcnLDqXNcIiwgZW1iZWRfaW50ZWdlciB4LkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpO1xuICAgIChcInpvbmVcIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb24geC5Mb2dlbWVudC56b25lKV0pXG5cblxubW9kdWxlIE1lbmFnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJlc3RhdGlvbnNfcmVjdWVzOiBQcmVzdGF0aW9uUmVjdWUudCBhcnJheTtcbiAgICBsb2dlbWVudDogTG9nZW1lbnQudDtcbiAgICBwZXJzb25uZXNfYV9jaGFyZ2U6IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5O1xuICAgIG5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50OiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGU6IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIGNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaTogYm9vbDtcbiAgICBlbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX21lbmFnZSAoeDogTWVuYWdlLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJNw6luYWdlXCJdLFxuICBbKFwicHJlc3RhdGlvbnNfcmXDp3Vlc1wiLCBlbWJlZF9hcnJheSAoZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSlcbiAgICB4Lk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpO1xuICAgIChcImxvZ2VtZW50XCIsIGVtYmVkX2xvZ2VtZW50IHguTWVuYWdlLmxvZ2VtZW50KTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4Lk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpO1xuICAgIChcIm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4Lk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZVwiLCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlXG4gICAgeC5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgKFwiY29uZGl0aW9uX3JhdHRhY2jDqV9mb3llcl9maXNjYWxfcGFyZW50X2lmaVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAoXCJlbmZhbnRfw6BfbmHDrnRyZV9hcHLDqHNfcXVhdHJpw6htZV9tb2lzX2dyb3NzZXNzZVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW46IHVuaXQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbjogdW5pdCAtPiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGluZm9ybWF0aW9uc19pbjogSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50O1xuICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudF9pblwiXSxcbiAgWyhcImluZm9ybWF0aW9uc19pblwiLCBlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5pbmZvcm1hdGlvbnNfaW4pO1xuICAgIChcImRhdGVfZW1tw6luYWdlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2VtbWVuYWdlbWVudF9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImTDqXBlbnNlc19qdXN0aWZpw6llc19yw6llbGxlbWVudF9lbmdhZ8OpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbildKVxuXG5cbm1vZHVsZSBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfZGVtYW5kZXVyX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX2NvbmpvaW50X2luOiBtb25leTtcbiAgICBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luOlxuICAgICAgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCBhcnJheTtcbiAgICBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbjogYm9vbDtcbiAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZV9pbjogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbjogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW46IGJvb2w7XG4gICAgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luOiBkYXRlO1xuICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW46XG4gICAgICBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudF9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfZGVtYW5kZXVyX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19kZW1hbmRldXJfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfY29uam9pbnRfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2NvbmpvaW50X2luKTtcbiAgICAoXCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcilcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXTDqV9yw6ltdW7DqXLDqWVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJjb25qb2ludF9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbik7XG4gICAgKFwicGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJjb25kaXRpb25fw6JnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cMOpcmlldXJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfw6l0dWRlc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW4pO1xuICAgIChcImRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luKTtcbiAgICAoXCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luXCIsXG4gICAgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luKV0pXG5cblxubW9kdWxlIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudF9pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfYmFzZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZl9pblwiXSxcbiAgWyhcImxveWVyX3ByaW5jaXBhbF9iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbik7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbik7XG4gICAgKFwiw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc19pblwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4pO1xuICAgIChcInLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4pO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gKHg6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlX2luXCJdLFxuICBbKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luKTtcbiAgICAoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwiY29uZGl0aW9uXzJfZHVfODMyXzI1X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZWRldmFuY2VfaW46IG1vbmV5O1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogdW5pdCAtPiBib29sO1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW46IHVuaXQgLT4gZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llcl9pblwiXSxcbiAgWyhcInR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cIiwgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llclxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbik7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlZGV2YW5jZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luKTtcbiAgICAoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgdHlwZV9wcmV0X2luOiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfaW46IE5ldWZPdUFuY2llbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInR5cGVfcHLDqnRfaW5cIiwgZW1iZWRfdHlwZV9wcmV0XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luKTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudF9pblwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW46IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW46IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbjogbW9uZXk7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpX2luXCJdLFxuICBbKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luKTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luKTtcbiAgICAoXCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW5cIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luKTtcbiAgICAoXCJsb2NhbF9oYWJpdMOpX3ByZW1pw6hyZV9mb2lzX2LDqW7DqWZpY2lhaXJlX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHLDqnRfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfaW46IFR5cGVMb2dlbWVudEZveWVyLnQ7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llcl9pblwiXSxcbiAgWyhcInR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cIiwgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4pO1xuICAgIChcInJlZGV2YW5jZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9pblwiLCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pXSlcblxuXG5tb2R1bGUgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiAoeDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVfaW5cIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZV9hc3N1csOpX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luKV0pXG5cblxubW9kdWxlIEltcGF5ZURlcGVuc2VMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgYWlkZV92ZXJzZWVfaW46IFZlcnNlbWVudEEudDtcbiAgICBtb250YW50X2FwbF9pbjogbW9uZXk7XG4gICAgbW9udGFudF9jaGFyZ2VzX2luOiBtb25leTtcbiAgICBkZXBlbnNlX2xvZ2VtZW50X2luOiBEZXBlbnNlTG9nZW1lbnQudDtcbiAgICBtb250YW50X2RldHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiAoeDogSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJhaWRlX3ZlcnPDqWVfaW5cIiwgZW1iZWRfdmVyc2VtZW50X2FcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmFpZGVfdmVyc2VlX2luKTtcbiAgICAoXCJtb250YW50X2FwbF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9hcGxfaW4pO1xuICAgIChcIm1vbnRhbnRfY2hhcmdlc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9jaGFyZ2VzX2luKTtcbiAgICAoXCJkw6lwZW5zZV9sb2dlbWVudF9pblwiLCBlbWJlZF9kZXBlbnNlX2xvZ2VtZW50XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5kZXBlbnNlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJtb250YW50X2RldHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2RldHRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHByZXN0YXRpb25fY291cmFudGVfaW46IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicHJlc3RhdGlvbl9jb3VyYW50ZV9pblwiLCBlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luKV0pXG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBleG9uZXJlX2NzZ186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJleG9uw6lyw6lfY3NnXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE5OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDEzNi0xLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IERlIGxhIGNvbnRyaWJ1dGlvbiBzb2NpYWxlIHN1ciBsZXMgcmV2ZW51cyBkJ2FjdGl2aXTDqSBldCBzdXIgbGVzIHJldmVudXMgZGUgcmVtcGxhY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA2IDogQ29udHJpYnV0aW9uIHNvY2lhbGUgZ8OpbsOpcmFsaXPDqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxOTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxOTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2NyZHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwidGF1eF9jcmRzXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxOyBzdGFydF9jb2x1bW49Mzk7IGVuZF9saW5lPTE5MTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MjE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICg5KSAoMSkpKSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG9fbXVsdF9tb25fcmF0IGFpZGVfZmluYWxlXyB0YXV4X2NyZHNfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTUyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MjE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMTsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKHRyeSBleG9uZXJlX2NzZ18gd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pIGluXG4gIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW46IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPVxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjg1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2ODU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjMyXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1NTdcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl86IFRyYW5jaGVSZXZlbnUudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3RyYW5jaGVfcmV2ZW51KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjUwOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgW3woe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQyMzAzXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzYxXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIzMDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI0XCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Mjk4NVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzYxXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwOFwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Mjk4NVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzJcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5NTA1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyOFwiKX0pfF0pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBbfCh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDgxMFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTA0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5NjE4XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjE2XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTc0NFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPSAoTGltaXRlVHJhbmNoZS5JbmZpbmkgKCkpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40OFwiKX0pfF0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc186IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7XG4gICAgICBcInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsacOpZXNcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAzODsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tYXBcbiAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnUudCkgLT5cbiAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZS5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKG9fdG9yYXRfbW9uIHRyYW5jaGVfaGF1dF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKSkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMgPVxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCA9ICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LnRhdXgpfSlcbiAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTk3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA4OTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudURlY2ltYWwudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA1MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHRyYW5jaGVfaGF1dF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjA0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAwMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwMzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkxNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiM1wiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffVxuXG5sZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY2MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NjE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjRcIilcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS44XCIpKSBlbHNlXG4gICAgICAgICAgICAgICggaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIjNcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NjE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExID1cbiAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV99XG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbi5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiBpblxuICBsZXQgYWdlX291dmVydHVyZV9kcm9pdF86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIjsgXCLDomdlX291dmVydHVyZV9kcm9pdFwiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMSA6IEluZm9ybWF0aW9uIGV0IHNpbXBsaWZpY2F0aW9uIGRlcyBkw6ltYXJjaGVzIGRlcyBhc3N1csOpcy5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1NSkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNjIpICgwKSAoMCkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19lcSAob19nZXRZZWFyIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTJcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfZHVyX2R1ciAoZHVyYXRpb25fb2ZfbnVtYmVycyAoNjApICgwKSAoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICg5KSAoMCkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIChvX2dldFllYXIgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTk1M1wiKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDIpICgwKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTU0XCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID0gYWdlX291dmVydHVyZV9kcm9pdF99XG5cbmxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW46IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgYWlkZV92ZXJzZWVfOiBWZXJzZW1lbnRBLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbiBpblxuICBsZXQgbW9udGFudF9hcGxfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luIGluXG4gIGxldCBtb250YW50X2NoYXJnZXNfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbiBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF86IERlcGVuc2VMb2dlbWVudC50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbiBpblxuICBsZXQgbW9udGFudF9kZXR0ZV86IG1vbmV5ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbiBpblxuICBsZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV86IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vZGVfb2NjdXBhdGlvbl9pbXBhecOpXCJdXG4gICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNDU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfYnJ1dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzEzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzEzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVwZW5zZV9sb2dlbWVudF8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVwZW5zZV9sb2dlbWVudF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV86IERlcGVuc2VMb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJkw6lwZW5zZV9sb2dlbWVudF9uZXR0ZVwiXVxuICAgIChlbWJlZF9kZXBlbnNlX2xvZ2VtZW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDMyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIyNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgdG90YWxfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBtb250YW50X2xveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9sb3llcl8gbW9udGFudF9hcGxfKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgdG90YWxfZWNoZWFuY2VzXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gdG90YWxfZWNoZWFuY2VzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbWVuc3VhbGl0ZV8gbW9udGFudF9hcGxfKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXykpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwic2V1aWxfaW1wYXnDqV9kw6lwZW5zZV9kZV9sb2dlbWVudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4Nzsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxODc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfYnJ1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfYnJ1dF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMDM7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjAzOyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX25ldF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfbmV0XyBtb250YW50X2NoYXJnZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI2OTsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI2OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgZWNoZWFuY2VfcHJldF9icnV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBlY2hlYW5jZV9wcmV0X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlX2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyOTc7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOTc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9uZXR0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbXBheWVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwibW9udGFudF9pbXBhecOpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAzNDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjQ1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIG1vbnRhbnRfZGV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZGV0dGVfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTgyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbW9udGFudF9kZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMzQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0ltcGF5ZURlcGVuc2VMb2dlbWVudC5tb250YW50X2ltcGF5ZSA9IG1vbnRhbnRfaW1wYXllX31cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gbWluaXN0w6lyaWVsbGUgTsKwRFNTL1NEMkIvMjAxOS82NSBkdSAyNSBtYXJzIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMTkgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzE2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjEvNjUgZHUgMTkgbWFycyAyMDIxIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIxIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDgxXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjIvODIgZHUgMjggbWFycyAyMDIyIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIyIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjI4XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pYy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTA3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWMuYnJ1dF9ob3JhaXJlID0gYnJ1dF9ob3JhaXJlX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gIGxldCBsb3llcl9wcmluY2lwYWxfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luIGluXG4gIGxldCBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjb2xvY2F0aW9uXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gaW5cbiAgbGV0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luIGluXG4gIGxldCBmcmFjdGlvbl9sODMyXzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZnJhY3Rpb25fbDgzMl8zXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5MDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuOThcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODE7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQgaW5cbiAgbGV0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjczOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjcwOTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0NTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NjQ2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODk3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkzMTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NjQyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTk3NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5OTc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIganVpbGxldCAyMDIyIGF1IDMxIGTDqWNlbWJyZSAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0ODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2OTc3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzIyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUwOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MzQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTYzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQ4ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk4MTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTgxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODIyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIyIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjcwOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDk1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODgxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkxMjQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NDM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk0MzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDE4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIwIGF1IDMxIGTDqWNlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTg4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NTcyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAxNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzMjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NjMxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODkzODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkyNDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTI0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3JlZmVyZW5jZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfcsOpZsOpcmVuY2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTg2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNjY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdHlwZV9haWRlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMlwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzMDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5MDBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Mzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDY4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTExXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTUzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc3NzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1Njg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODI2MVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5NjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTM2XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDgyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTg1XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMDQ0XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ3MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODI2MVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NzY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MTk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNjgwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTNcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE4MjFcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUyMDBcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzIwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1NDhcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIwNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTgwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzNDhcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE3OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTUxNVwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODk1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTg1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjQ2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTY2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzkyXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNDYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTcyOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0MTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI0MTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTQ7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTA7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcImxveWVyX3ByaW5jaXBhbF9hdmVjX3LDqWR1Y3Rpb25fbWV1YmzDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl8gdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfXG4gICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpKSkgZWxzZSBsb3llcl9wcmluY2lwYWxfYmFzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUzMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01MzI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LlwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjFcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJwbGFmb25kX2TDqWdyZXNzaXZpdMOpX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuNFwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU1OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJsb3llcl/DqWxpZ2libGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4MDY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykgdGhlbiBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gZWxzZVxuICAgICAgICAgICAgICBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc18pKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFpZGVfZmluYWxlXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjNcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM5XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyNFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByYXBwb3J0X2xveWVyc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJyYXBwb3J0X2xveWVyc1wiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTAzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA3OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxveWVyX3JlZmVyZW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGxveWVyX2VsaWdpYmxlXyBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEyNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX3RhdXhfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTM0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU2MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTY1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NjA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTkzMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfKVxuICAgICAgICAgICAgICAgICAgdGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE3ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTc4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTcxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU4OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg1ODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU4OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg1ODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCBmcmFjdGlvbl9sODMyXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXQgZnJhY3Rpb25fbDgzMl8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk4XCIpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgxNzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlID1cbiAgICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCB0eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVkZXZhbmNlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gaW5cbiAgbGV0IGNvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvZWZmaWNpZW50X3JfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTY1OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMTcyNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU0MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU1MTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODUwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg1MDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHR5cGVfbG9nZW1lbnRfZm95ZXJfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb252ZW50aW9ubmVtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkwKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY1MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJwbGFmb25kX8OpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0ODY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDg2OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzQxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE3OTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NTg2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcxMDM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5Mjk5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNTY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyNjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTk1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYzODg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2NjM0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI3NDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5Njc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjMyMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTc4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NzA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjM2MzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODYzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzExOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDgxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzYzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MzY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc5MjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTcyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTA1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzgwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwOTU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxMTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzY1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjI7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM0NzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQ0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjEwMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTU1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NDU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzNjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzA4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzQzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDU3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc2ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDg2OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzYwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNzQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM4ODRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzQxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pXG4gICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzE0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY4XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NzU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQyMDkxXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMzkzNDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MjE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NTc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiByZWRldmFuY2VfIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTYyMDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTIxOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjIwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzczOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzcxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzc1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3NTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODY1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGRlbm9taW5hdGV1cl8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfcl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChsZXQgZGVub21pbmF0ZXVyXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBkZW5vbWluYXRldXJfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGRlbm9taW5hdGV1cl8pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gZGVub21pbmF0ZXVyX1xuICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN186IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE0MTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN18pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN19cbiAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjMwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYzMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjMwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4NjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzk3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzY7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODg5OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODExOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3MzY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjQzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODMyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNF8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCB0eXBlX3ByZXRfOiBUeXBlUHJldC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gaW5cbiAgbGV0IGFuY2llbm5ldGVfbG9nZW1lbnRfOiBOZXVmT3VBbmNpZW4udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM1NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjFcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM2NDsgc3RhcnRfY29sdW1uPTE1OyBlbmRfbGluZT0yMzY0OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMlwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTExMzNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ1Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDU3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNlwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTYuMjVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MDA4NVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF90cmFuY2hlX2luZsOpcmlldXJlX2Q4MzJfMTVfMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfc3Vww6lyaWV1cmVfZDgzMl8xNV8xXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzgxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40MTZcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgcHJlbWllclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlLDqGdsZW1lbnQgKENFKSBuwrAyODY2Lzk4IGR1IGNvbnNlaWwgZHUgMzEgZMOpY2VtYnJlIDE5OTggY29uY2VybmFudCBsZXMgdGF1eCBkZSBjb252ZXJzaW9uIGVudHJlIGwnZXVybyBldCBsZXMgbW9ubmFpZXMgZGVzIMOJdGF0cyBtZW1icmVzIGFkb3B0YW50IGwnZXVyb1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiOyBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI0Mzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI1XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzRcIikpXG4gICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gYW1lbGlvcmVfcGFyX29jY3VwYW50XyAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3MlwiKVxuICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoMTApICgxKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzRcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MjQ7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0MTI7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQxMjsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE3OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUxNzsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMTA7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMxMDsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMzMzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMzMzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc2OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzEzMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxMzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF8pIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfZDgzMl8xOFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTU7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM1ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzU4NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOF8pIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTA3MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzOTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTk1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MTIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAwMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTkzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDE0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5OTkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTYxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NDQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzI5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzQxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTYwOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDQzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE3NTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTQzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM2MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ1MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3NTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM2MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Njc5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDgxOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg5NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Njg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDEzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzU1NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkyMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI0MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY5OTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTI5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2MTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgxNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjY2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjUyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzOTU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTcwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTU4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ5NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzExXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMyM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjExODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NzIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTcwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDQxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE1MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0OTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MzM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTkwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY2MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MzU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc4MTRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDcyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1ODc0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzA4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTkxNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNTUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjAxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODU0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjYzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjEzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2NDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NTA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3NDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg1OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDg1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTk4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjU5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTAxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDgwMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MzI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzOTY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTYwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjkyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzM2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg2ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNzgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTAwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjIyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk0NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzOTU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzU4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODE3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAyNDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MzgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTEzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MTM4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjgyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzg3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzkxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTExNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM2MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MjU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDEwOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk5NTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDk1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjI4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTAxNTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2ODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgxMzFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NTgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQ1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NTc2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODkwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQ4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTg1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTA2NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg1MTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjUxNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTUyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODg2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MjQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4ODI0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzYyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTg5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTc0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc1NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM0MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU5OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNjczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjUzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzAyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDU0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ0NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzNDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA1NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDM3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjAzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjg3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTU2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDYyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY3OThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjExMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwODg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5MTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTIxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ0NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyODk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTk2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDcxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Njc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTk0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjQ1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyNjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ3MDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2MzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxODc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzE0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2NjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTAzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjIwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYwNzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMjYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMDk3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDg4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI1MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0OTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjYyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDAxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEwMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMzk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYyMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjczMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDYzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ5NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5NDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY3ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3ODcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU4OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEyMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MzE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg2KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTQyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU0MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG9fc3ViX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM2NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9zaWduYXR1cmVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX2VudHJlZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNDY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg3OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg3OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg2OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4OTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTk0OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExX1xuICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTUzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM18pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM18pXG4gICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2NvcHJvcHJpw6l0YWlyZXNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI5MDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzkzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM5MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQzODsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV8gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV8pXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ4MTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2NvZWZmX2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIxMDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjgxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxMDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18pIHRoZW5cbiAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfIGVsc2VcbiAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjgxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkyOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIxMzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNTg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTU4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcyMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MjE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSA9XG4gICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwID1cbiAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX3ByZXRfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fcHLDqnRcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+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+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX25hdGlvbmFsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfbG9nZW1lbnRfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODk7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBhcmVudGUuQXNjZW5kYW50ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2wzNTFfOF8xX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDY1KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDE2MV8xN18yX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjI1XCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSBjb25kaXRpb25fMl9yODIzXzRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMjEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzc7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbWFwXG4gICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBjb2VmZl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZfKVxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBvX2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjE7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdF9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODE7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCA9XG4gICAgICAgY29uZGl0aW9uXzJfcjgyM180X31cblxubGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCByZXNzb3VyY2VzX2RlbWFuZGV1cl86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19kZW1hbmRldXJfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfY29uam9pbnRfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4gaW5cbiAgbGV0IHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luIGluXG4gIGxldCBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiBpblxuICBsZXQgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luIGluXG4gIGxldCBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc186IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbiBpblxuICBsZXQgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XzogZGF0ZSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pbiBpblxuICBsZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF86IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfc2V1aWxcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTQ7IHN0YXJ0X2NvbHVtbj00NjsgZW5kX2xpbmU9NDk0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGlzcG9zaXRpb25zIGFwcGxpY2FibGVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTg5MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGlzcG9zaXRpb25zIGFwcGxpY2FibGVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDQ7IHN0YXJ0X2NvbHVtbj01MTsgZW5kX2xpbmU9NTA0OyBlbmRfY29sdW1uPTU3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llclwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDk4OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBtb25leSkgKHN1bTJfOiBtb25leSkgLT4gb19hZGRfbW9uX21vbiBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lXzogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5ODsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9yXzgyMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfMTBcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19lcSAob19sZW5ndGggcGVyc29ubmVzX2FfY2hhcmdlXykgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2ludF9pbnQgKG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzNTAwMFwiKSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT4gYWJhdHRlbWVudF9cbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+IGFiYXR0ZW1lbnRfXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxODsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgYWJhdHRlbWVudF9yXzgyMl84XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiYWJhdHRlbWVudF9yXzgyMl84XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NjI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIGxveWVyX291X2NoYXJnZXNfIC0+XG4gICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84X1xuICAgICAgICAgICAgfCBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDk7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMyA6IE1vbnRhbnQgZm9yZmFpdGFpcmUgZGUgcmVzc291cmNlcyBhcHBsaWNhYmxlIGF1eCDDqXR1ZGlhbnRzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc18pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiByZXNzb3VyY2VzX2RlbWFuZGV1cl8gcmVzc291cmNlc19jb25qb2ludF8pXG4gICAgICAgICAgICAgIHJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fYW5kIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX1xuICAgICAgICAgICAgICAgICAob19hbmQgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcmVzc291cmNlc19kZW1hbmRldXJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSB0aGVuXG4gICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN18gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcykpXG4gICAgICAgICAgICAgICAgICAgICAgIHRydWUgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgIHJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICAoe1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFNtaWNJbi5yZXNpZGVuY2VfaW4gPSBzbWljX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWMuYnJ1dF9ob3JhaXJlIGluXG4gIGxldCByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2w1MTJfM18yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoXG4gICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCA9IGRyb2l0X291dmVydF87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgPVxuICAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2VfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgPSBhZ2VfbDUxMl8zXzJfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsX2Jhc2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxveWVyX3ByaW5jaXBhbF9iYXNlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxveWVyX3ByaW5jaXBhbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5OTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAxOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAzOyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDM7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG9nZW1lbnRfZXN0X2NoYW1icmVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODE4OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTgxODsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT04MTg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2FpZGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgyMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuY29sb2NhdGlvblwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjb2xvY2F0aW9uXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb2dlbWVudF9tZXVibMOpX2Q4NDJfMlwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04Mjc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04Mjc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWZcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF9iYXNlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdGlvbl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjgxOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjgxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiBhaWRlX2ZpbmFsZV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzkzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzM7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjczOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpKVxuICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCkpKVxuICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCB0eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4gaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEwMDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTQyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwODk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9kODQyXzE3XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE5MTsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODM7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIudHlwZV9sb2dlbWVudF9mb3llclwiXVxuICAgICAgKGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk2NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk2NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHR5cGVfbG9nZW1lbnRfZm95ZXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvbnZlbnRpb25uZW1lbnRfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlZGV2YW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDM7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9yX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3BsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMTg7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMTg7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzU1OVwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTM7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNTQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMzYyXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMxOTZcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE3MTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTcyOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzM2NVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj03OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0MTRcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzEwMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQ3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA3M1wiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwMTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY0NDBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjc7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcyODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY0NDBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XykgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMzOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MjsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDI7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MjsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODA2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gZXF1aXZhbGVuY2VfbG95ZXJfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJsb3llcl9taW5pbWFsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTczOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN19cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Nzg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfKSBsb3llcl9taW5pbWFsXylcbiAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk1NzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NjY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhYmF0dGVtZW50XyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg4NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4ODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV8gcmVkZXZhbmNlXykgdGhlbiByZWRldmFuY2VfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4OTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5MTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTE5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9IGVxdWl2YWxlbmNlX2xveWVyXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NzM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODc0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAyNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwNTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUxOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49NDc7IGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGRhdGVfY2FsY3VsXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MTM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxMzAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTEzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjI5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzA2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzNDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA3ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODY3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MDEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjk2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzU2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzQ0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzAwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwOTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2ODgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2MjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI4MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTE2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjM1MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTkxNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzI1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTk0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ5MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2OTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNzA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxNTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyODNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDA2NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1OTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzkwNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNDI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDYwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTM0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUyMDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODk1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM0NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM2NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Njc2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg2NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU1MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTUxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkwOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTczOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NDE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4NjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTA3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzM3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY4NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyOTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDEwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzgxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzUxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjAzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTYzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY0OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4OTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUwNzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzg3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzczMDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzODAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzczMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTA5MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODk4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI5OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODIwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MjBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTc3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzUzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3NTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjUzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MTA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDE1MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU1NjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Nzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcwMzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTJfKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzc7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChkYXRlX2NhbGN1bF86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4NTsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg1OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfY2FsY3VsXykpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NDI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0Mjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0MjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDczNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDczNjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN18pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcyNjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9cbiAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV8pIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5OTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKVxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSBlbHNlXG4gICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg0MjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1ODY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX3NpZ25hdHVyZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9lbnRyZWVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnR5cGVfbG9nZW1lbnRfZm95ZXJcIl1cbiAgICAgIChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX29mX251bWJlcnMgKDE5NzApICgxKSAoMSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTEzOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci56b25lXCJdIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVkZXZhbmNlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MDE7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwMTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MDg7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9yX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3BsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjcyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Njc1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTFfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2NjA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQyMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XylcbiAgICAgICAgICAgICAgdGhlbiBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XyBlbHNlIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQzNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODcxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQ5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY0OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODcxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDM4MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgbWVuc3VhbGl0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ3MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0ODQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDg0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9jYWxjdWxfYXBsXzogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQxMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfbcOpbmFnZV9hdmVjX2Fycm9uZGlcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTc0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICBcIjQ5XCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic291c19jYWxjdWxfdHJhaXRlbWVudFwiXVxuICAgIChlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDM2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ2OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ2OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQxOyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ4OyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDg7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ0OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQyOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDI7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0NTsgc3RhcnRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ1OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0Mzsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQzOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTI7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDUzOyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTA7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBiYWlsbGV1cl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhaWxsZXVyXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1NTsgc3RhcnRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTk7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1OTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQwOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTc7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTc7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkzOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk4OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTg7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMjsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTAzOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDQ7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NDsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDU7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NTsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA3OyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl9fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzg7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzk7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Mjsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDcyOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzM7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3MzsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Njsgc3RhcnRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc2OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc0OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzQ7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Nzsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcil9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDgwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFyZ186IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAoc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXG4gICAgICAgICAgICAgICAgICAgYXJnXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03NTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzUxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc1MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gIGxldCBpbmZvcm1hdGlvbnNfOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uaW5mb3JtYXRpb25zX2luIGluXG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjA4MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjU7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MjsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MjsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKSAocmFpc2VcbiAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGxcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ww6lyaW9kZV9kw6ltw6luYWdlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDY5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpcnN0RGF5T2ZNb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9uYWlzc2FuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1OTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNFwiKSlcbiAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9yYW5nX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTA5OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykgdGhlblxuICAgICAgICAgICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2UgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHByZXRfOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDI0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXRfLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJldF8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTg4OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJldF8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocHJldF86IFByZXQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3ByZXRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3Byw6p0XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NTM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcyNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxNjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRlbWFuZGV1clwiXSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfcsOpc2lkZW5jZV9wcmluY2lwYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180IGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1clwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjkzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY5ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIFI4MzItMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl8uTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUwOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnZlbnRpb25fLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgY29udmVudGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udmVudGlvbl8uQ29udmVudGlvbkFOSEEuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzczOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzczOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSA9IGRhdGVfY291cmFudGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkdXJlZV9sODQxXzFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImR1csOpZV9sODQxXzFfM1wiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIyOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpw6l0w6lcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM1MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzAyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY5OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY5OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3MDsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3NzA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3MDsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3NzA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzQ7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxNDsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE0OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfZGlzcG9zaXRpb25zX2NvbW11bmVzXCJdXG4gICAgKGVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3IgKG9fbm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXylcbiAgICAgICAgICAgICAgICAgKG9fbm90IGNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlXykpIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpc2VFbkNoYXJnZUVuZmFudC5FZmZlY3RpdmVFdFBlcm1hbmVudGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpfSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgZGF0ZV9tYXJpYWdlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBkYXRlX21hcmlhZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmVlX2w4NDFfMV8zXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj04O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogUHJlc3RhdGlvblJlY3VlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fb3IgYWNjX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2w4NDFfMlwiXVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTI0OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE0MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgIChvX2VxIGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc19cbiAgICAgICAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpXG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZV8gdGhlblxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfbDg0MV8yXztcbiAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAwMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfbcOpbmFnZV9hdmVjX2Fycm9uZGlcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05OTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTkzOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgXCI0OVwiKSkpIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05OTM7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRcIl1cbiAgICAoZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1MjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRcbiAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMDsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI1OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MjU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzI7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyODsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTI4OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI2OyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MjY7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI5OyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjk7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI3OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzM7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzY7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM3OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzQ7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM5OyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQzOyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDM7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ0OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDQ7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI0OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyX18gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTc7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NDsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODk7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTA7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MDsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTkzOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5MTsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkxOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODg7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk5OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpfSkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEwOyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEwOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjExOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTQ7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEyOyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMzsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNTsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjE1OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyMzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTg7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE3OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTc7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjA7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMTsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTY7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNjsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwOTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI0OyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRcbiAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2Mjsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU3OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjQ7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2MDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU4OyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTg7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYxOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NjE7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU5OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTk7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njg7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2ODsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY5OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Njk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjY7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTcxOyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc1OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc2OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM3OyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjM3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDE7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MTsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM5OyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0Mjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQyOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ0OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDQ7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQ4OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ5OyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDk7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzNjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjUxOyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAwMzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFyZ186IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIGFyZ18pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDA2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc4OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmLDqW7DqWZpY2llX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzY7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnNpdHVhdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5ODsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk4OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTExMzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7IFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTExOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTE2OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fb3IgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgKG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcwOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYXBsXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYWxfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV9hcGxfIGFpZGVfZmluYWxlX2FsXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IG1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfOiBNZW5hZ2UudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJtw6luYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVcIl0gKGVtYmVkX21lbmFnZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTY3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIHtNZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzID0gKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgICAgICAgICAgICBNZW5hZ2UubG9nZW1lbnQgPSAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKX0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTUyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGVcIjtcbiAgICAgIFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQpXG4gICAgKHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luID0gY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9IGNhbGN1bGV0dGVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVffSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5tw6luYWdlXCJdIChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRlbWFuZGV1clwiXSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTY7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTYxOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTE2MTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWVcIjsgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdXG4gICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudClcbiAgICAoe0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X21lbmFnZV87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVffSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTQyOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTkzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExOTM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE0MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTY1OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMzY7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiYWlkZV9maW5hbGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExNDM7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDb25zZWlsIGQnw4l0YXQsIDXDqG1lIC0gNMOobWUgY2hhbWJyZXMgcsOpdW5pZXMsIDIxLzA3LzIwMTcsIDM5ODU2M1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pXG4gICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpKSkpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTQzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmFpZGVfZmluYWxlID0gYWlkZV9maW5hbGVffVxuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEFpZGVzX2xvZ2VtZW50XG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHR5cGVfcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkQzMzFfMzJcIlxuICAgICAgICAtIFwiRDMzMV82M182NFwiXG4gICAgICAgIC0gXCJEMzMxXzU5XzhcIlxuICAgICAgICAtIFwiRDMzMV83Nl8xXCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9wcmV0X3RvX2pzb28gOiBUeXBlUHJldC50IC0+IHR5cGVfcHJldCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEMzMxXzMyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV8zMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNjNfNjQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzYzXzY0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV81OV84IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV81OV84XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV83Nl8xIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV83Nl8xXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9wcmV0X29mX2pzb28gKHR5cGVfcHJldCA6IHR5cGVfcHJldCBKcy50KSA6IFR5cGVQcmV0LnQgPVxuICBtYXRjaCB0eXBlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEMzMxXzMyXCIgLT4gVHlwZVByZXQuRDMzMV8zMiAoKVxuICB8IFwiRDMzMV82M182NFwiIC0+IFR5cGVQcmV0LkQzMzFfNjNfNjQgKClcbiAgfCBcIkQzMzFfNTlfOFwiIC0+IFR5cGVQcmV0LkQzMzFfNTlfOCAoKVxuICB8IFwiRDMzMV83Nl8xXCIgLT4gVHlwZVByZXQuRDMzMV83Nl8xICgpXG4gIHwgXCJBdXRyZVwiIC0+IFR5cGVQcmV0LkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlUHJldC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0aXR1bGFpcmVfcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1clwiXG4gICAgICAgIC0gXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdGl0dWxhaXJlX3ByZXRfdG9fanNvbyA6IFRpdHVsYWlyZVByZXQudCAtPiB0aXR1bGFpcmVfcHJldCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyAodGl0dWxhaXJlX3ByZXQgOiB0aXR1bGFpcmVfcHJldCBKcy50KVxuICA6IFRpdHVsYWlyZVByZXQudCA9XG4gIG1hdGNoIHRpdHVsYWlyZV9wcmV0IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGVtYW5kZXVyXCIgLT4gVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgKClcbiAgfCBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICAgIFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVGl0dWxhaXJlUHJldC50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgICAtIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICAgIC0gXCJQYXNEZVRyYXZhdXhcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50IC0+IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQYXNEZVRyYXZhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZVRyYXZhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X29mX2pzb29cbiAgKHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudClcbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPVxuICBtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSAoKVxuICB8IFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yICgpXG4gIHwgXCJQYXNEZVRyYXZhdXhcIiAtPiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIlxuICAgICAgICAtIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgICAgLSBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvb1xuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50IC0+IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQYXNEZVRyYXZhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZVRyYXZhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSA6IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudClcbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50ICgpXG4gIHwgXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgKClcbiAgfCBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPdWlcIlxuICAgICAgICAtIFwiTm9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb29cbiAgOiBBbWVsaW9yZVBhck9jY3VwYW50LnQgLT4gYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb29cbiAgKGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA6IGFtZWxpb3JlX3Bhcl9vY2N1cGFudCBKcy50KVxuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCA9XG4gIG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aVwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpICgpXG4gIHwgXCJOb25cIiAtPiBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQW1lbGlvcmVQYXJPY2N1cGFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsaW1pdGVfdHJhbmNoZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV90b19qc29vIDogTGltaXRlVHJhbmNoZS50IC0+IGxpbWl0ZV90cmFuY2hlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFJldmVudSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJldmVudVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEluZmluaSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZmluaVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfb2ZfanNvbyAobGltaXRlX3RyYW5jaGUgOiBsaW1pdGVfdHJhbmNoZSBKcy50KVxuICA6IExpbWl0ZVRyYW5jaGUudCA9XG4gIG1hdGNoIGxpbWl0ZV90cmFuY2hlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUmV2ZW51XCIgLT5cbiAgTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGUjIy5wYXlsb2FkKSlcbiAgfCBcIkluZmluaVwiIC0+IExpbWl0ZVRyYW5jaGUuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJSZXZlbnVcIlxuICAgICAgICAtIFwiSW5maW5pXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vXG4gIDogTGltaXRlVHJhbmNoZURlY2ltYWwudCAtPiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFJldmVudSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJldmVudVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb29cbiAgKGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgOiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZURlY2ltYWwudCA9XG4gIG1hdGNoIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwjIy5wYXlsb2FkKSlcbiAgfCBcIkluZmluaVwiIC0+IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTGltaXRlVHJhbmNoZURlY2ltYWwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbl9yZWN1ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICAgIC0gXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByZXN0YXRpb25fcmVjdWVfdG9fanNvbyA6IFByZXN0YXRpb25SZWN1ZS50IC0+IHByZXN0YXRpb25fcmVjdWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29tcGxlbWVudEZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyAocHJlc3RhdGlvbl9yZWN1ZSA6IHByZXN0YXRpb25fcmVjdWUgSnMudClcbiAgOiBQcmVzdGF0aW9uUmVjdWUudCA9XG4gIG1hdGNoIHByZXN0YXRpb25fcmVjdWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSAoKVxuICB8IFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByZXN0YXRpb25SZWN1ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYXJlbnRfb3VfYXV0cmUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyA6IFBhcmVudE91QXV0cmUudCAtPiBwYXJlbnRfb3VfYXV0cmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyAocGFyZW50X291X2F1dHJlIDogcGFyZW50X291X2F1dHJlIEpzLnQpXG4gIDogUGFyZW50T3VBdXRyZS50ID1cbiAgbWF0Y2ggcGFyZW50X291X2F1dHJlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCIgLT5cbiAgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhcmVudF9vdV9hdXRyZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVcIiAtPiBQYXJlbnRPdUF1dHJlLkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYXJlbnRPdUF1dHJlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiXG4gICAgICAgIC0gXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQgLT4gc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBhc0RlR2FyZGVBbHRlcm5lZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gIChzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgOiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudClcbiAgOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIiAtPiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSAoKVxuICB8IFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiIC0+XG4gIFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2Ugc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBc2NlbmRhbnRcIlxuICAgICAgICAtIFwiRGVzY2VuZGFudFwiXG4gICAgICAgIC0gXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudGVfdG9fanNvbyA6IFBhcmVudGUudCAtPiBwYXJlbnRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFzY2VuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IERlc2NlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFyZW50ZV9vZl9qc29vIChwYXJlbnRlIDogcGFyZW50ZSBKcy50KSA6IFBhcmVudGUudCA9XG4gIG1hdGNoIHBhcmVudGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBc2NlbmRhbnRcIiAtPiBQYXJlbnRlLkFzY2VuZGFudCAoKVxuICB8IFwiRGVzY2VuZGFudFwiIC0+IFBhcmVudGUuRGVzY2VuZGFudCAoKVxuICB8IFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIiAtPlxuICAgIFBhcmVudGUuQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudGUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgICAtIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICAgIC0gXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvb1xuICA6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQgLT4gZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGF0ZURlTmFpc3NhbmNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGF0ZURlTmFpc3NhbmNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2Vfb2ZfanNvb1xuICAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VcbiAgICA6IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIEpzLnQpXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCA9XG4gIG1hdGNoIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGF0ZURlTmFpc3NhbmNlXCIgLT5cbiAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuRGF0ZURlTmFpc3NhbmNlIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5wYXlsb2FkKSlcbiAgfCBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAtPlxuICAgIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgKClcbiAgfCBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAtPlxuICAgIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHpvbmVfZF9oYWJpdGF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiWm9uZTFcIlxuICAgICAgICAtIFwiWm9uZTJcIlxuICAgICAgICAtIFwiWm9uZTNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIDogWm9uZURIYWJpdGF0aW9uLnQgLT4gem9uZV9kX2hhYml0YXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgWm9uZTEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vICh6b25lX2RfaGFiaXRhdGlvbiA6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQpXG4gIDogWm9uZURIYWJpdGF0aW9uLnQgPVxuICBtYXRjaCB6b25lX2RfaGFiaXRhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlpvbmUxXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUxICgpXG4gIHwgXCJab25lMlwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMiAoKVxuICB8IFwiWm9uZTNcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1pvbmVESGFiaXRhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvb1xuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCAtPiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gIChwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgOiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQpXG4gIDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID1cbiAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiIC0+XG4gIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5wYXlsb2FkKSlcbiAgfCBcIk5vblwiIC0+IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJcIlxuICAgICAgICAtIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgICAgLSBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHZlcnNlbWVudF9hX3RvX2pzb28gOiBWZXJzZW1lbnRBLnQgLT4gdmVyc2VtZW50X2EgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEJlbmVmaWNpYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2Ffb2ZfanNvbyAodmVyc2VtZW50X2EgOiB2ZXJzZW1lbnRfYSBKcy50KSA6IFZlcnNlbWVudEEudCA9XG4gIG1hdGNoIHZlcnNlbWVudF9hIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJcIiAtPiBWZXJzZW1lbnRBLkJhaWxsZXVyICgpXG4gIHwgXCJCZW5lZmljaWFpcmVcIiAtPiBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSAoKVxuICB8IFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgLT4gVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEEudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgICAgLSBcIk1lbnN1YWxpdGVcIlxuICAgICAgICAtIFwiTG95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gOiBEZXBlbnNlTG9nZW1lbnQudCAtPiBkZXBlbnNlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBNZW5zdWFsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWVuc3VhbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IExveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyAoZGVwZW5zZV9sb2dlbWVudCA6IGRlcGVuc2VfbG9nZW1lbnQgSnMudClcbiAgOiBEZXBlbnNlTG9nZW1lbnQudCA9XG4gIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJNZW5zdWFsaXRlXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTG95ZXJcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGVwZW5zZUxvZ2VtZW50LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJJbXBheWVMb3llclwiXG4gICAgICAgIC0gXCJJbXBheWVQcmV0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCAtPiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEltcGF5ZUxveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBJbXBheWVQcmV0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllUHJldFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vXG4gIChtb2RlX29jY3VwYXRpb25faW1wYXllIDogbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50KVxuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPVxuICBtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiSW1wYXllTG95ZXJcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKVxuICB8IFwiSW1wYXllUHJldFwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uSW1wYXllLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBhc0VsaWdpYmxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCAtPiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRWxpZ2libGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNFbGlnaWJsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgOiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0VsaWdpYmxlXCIgLT4gVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgLT4gdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgKHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpXG4gIDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbWF0Y2ggdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDZWxpYmF0YWlyZVwiXG4gICAgICAgIC0gXCJNYXJpZXNcIlxuICAgICAgICAtIFwiUGFjc2VzXCJcbiAgICAgICAgLSBcIkNvbmN1Ymluc1wiXG4gICAgICAgIC0gXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiXG4gICAgICAgIC0gXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25GYW1pbGlhbGUudCAtPiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENlbGliYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ2VsaWJhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJpZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJpZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBQYWNzZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYWNzZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb25jdWJpbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb25jdWJpbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGUgOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQpIDogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ2VsaWJhdGFpcmVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgKClcbiAgfCBcIk1hcmllc1wiIC0+XG4gIFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZmFtaWxpYWxlIyMucGF5bG9hZCkpXG4gIHwgXCJQYWNzZXNcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzICgpXG4gIHwgXCJDb25jdWJpbnNcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zICgpXG4gIHwgXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiIC0+XG4gICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0ICgpXG4gIHwgXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIiAtPlxuICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkZhbWlsaWFsZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmlzZV9lbl9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyA6IFByaXNlRW5DaGFyZ2UudCAtPiBwcmlzZV9lbl9jaGFyZ2UgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIChwcmlzZV9lbl9jaGFyZ2UgOiBwcmlzZV9lbl9jaGFyZ2UgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlLnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5SZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ2hhcmdlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VTb2NpYWxlXCJcbiAgICAgICAgLSBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vXG4gIDogVHlwZUxvZ2VtZW50Rm95ZXIudCAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlU29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgKHR5cGVfbG9nZW1lbnRfZm95ZXIgOiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDogVHlwZUxvZ2VtZW50Rm95ZXIudCA9XG4gIG1hdGNoIHR5cGVfbG9nZW1lbnRfZm95ZXIjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiIC0+XG4gICAgVHlwZUxvZ2VtZW50Rm95ZXIuTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgKClcbiAgfCBcIlJlc2lkZW5jZVNvY2lhbGVcIiAtPiBUeXBlTG9nZW1lbnRGb3llci5SZXNpZGVuY2VTb2NpYWxlICgpXG4gIHwgXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiIC0+XG4gICAgVHlwZUxvZ2VtZW50Rm95ZXIuRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVMb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiXG4gICAgICAgIC0gXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiXG4gICAgICAgIC0gXCJBdXRyZXNQZXJzb25uZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vXG4gIDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgLT4gY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlc1BlcnNvbm5lcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlc1BlcnNvbm5lc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAoY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICA6IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQpXG4gIDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmtpbmRcbiAgICB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyAoKVxuICB8IFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgKClcbiAgfCBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgKClcbiAgfCBcIkF1dHJlc1BlcnNvbm5lc1wiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGVyc29ubmVTZXVsZVwiXG4gICAgICAgIC0gXCJDb3VwbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGVyc29ubmVTZXVsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb3VwbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb3VwbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIDogc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGVyc29ubmVTZXVsZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpXG4gIHwgXCJDb3VwbGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29sbGVjdGl2aXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiR3VhZGVsb3VwZVwiXG4gICAgICAgIC0gXCJHdXlhbmVcIlxuICAgICAgICAtIFwiTWFydGluaXF1ZVwiXG4gICAgICAgIC0gXCJMYVJldW5pb25cIlxuICAgICAgICAtIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgICAgLSBcIlNhaW50TWFydGluXCJcbiAgICAgICAgLSBcIk1ldHJvcG9sZVwiXG4gICAgICAgIC0gXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgICAtIFwiTWF5b3R0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV90b19qc29vIDogQ29sbGVjdGl2aXRlLnQgLT4gY29sbGVjdGl2aXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEd1YWRlbG91cGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdWFkZWxvdXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR3V5YW5lIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3V5YW5lXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFydGluaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcnRpbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMYVJldW5pb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMYVJldW5pb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludEJhcnRoZWxlbXkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludE1hcnRpbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50TWFydGluXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWV0cm9wb2xlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWV0cm9wb2xlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWF5b3R0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1heW90dGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV9vZl9qc29vIChjb2xsZWN0aXZpdGUgOiBjb2xsZWN0aXZpdGUgSnMudClcbiAgOiBDb2xsZWN0aXZpdGUudCA9XG4gIG1hdGNoIGNvbGxlY3Rpdml0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkd1YWRlbG91cGVcIiAtPiBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKVxuICB8IFwiR3V5YW5lXCIgLT4gQ29sbGVjdGl2aXRlLkd1eWFuZSAoKVxuICB8IFwiTWFydGluaXF1ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpXG4gIHwgXCJMYVJldW5pb25cIiAtPiBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpXG4gIHwgXCJTYWludEJhcnRoZWxlbXlcIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpXG4gIHwgXCJTYWludE1hcnRpblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKVxuICB8IFwiTWV0cm9wb2xlXCIgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKVxuICB8IFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiAoKVxuICB8IFwiTWF5b3R0ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdDb2xsZWN0aXZpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50IC0+IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAocHJpc2VfZW5fY2hhcmdlX2VuZmFudCA6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZUVuZmFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvX2pzb28gKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsXG4gICAgOiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCkgOiBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUkgPVxuICAgICAgICBKcy5ib29sIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWVcbiAgICAgIGVuZFxuICBsZXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfb2ZfanNvb1xuICAgIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCA6IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIEpzLnQpIDpcbiAgICBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCA9XG4gICAge1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIyMuY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJO1xuICAgICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlUGVyY3VlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnZlbnRpb25fYV9uX2hfYSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzM6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udmVudGlvbl9hX25faF9hX3RvX2pzb28gKGNvbnZlbnRpb25fYV9uX2hfYSA6IENvbnZlbnRpb25BTkhBLnQpXG4gICAgOiBjb252ZW50aW9uX2Ffbl9oX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzID1cbiAgICAgICAgSnMuYm9vbCBjb252ZW50aW9uX2Ffbl9oX2EuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzNcbiAgICAgIGVuZFxuICBsZXQgY29udmVudGlvbl9hX25faF9hX29mX2pzb29cbiAgICAoY29udmVudGlvbl9hX25faF9hIDogY29udmVudGlvbl9hX25faF9hIEpzLnQpIDogQ29udmVudGlvbkFOSEEudCA9XG4gICAge1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMgPVxuICAgICAgICBKcy50b19ib29sIGNvbnZlbnRpb25fYV9uX2hfYSMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjM1xuICAgIH1cblxuY2xhc3MgdHlwZSBwZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbjpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZm9ybWVBcnRpY2xlTDQ0MjE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uXG4gICAgOiBQZXJzb25uZVNvdXNMb2NhdGlvbi50KSA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uID1cbiAgICAgICAgZGF0ZV90b19qc29vIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvblxuICAgICAgdmFsIGNvbmZvcm1lQXJ0aWNsZUw0NDIxID1cbiAgICAgICAgSnMuYm9vbCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uLmNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xXG4gICAgICBlbmRcbiAgbGV0IHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvb1xuICAgIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uIDogcGVyc29ubmVfc291c19sb2NhdGlvbiBKcy50KSA6XG4gICAgUGVyc29ubmVTb3VzTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5kYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb247XG4gICAgICBjb25mb3JtZV9hcnRpY2xlX2w0NDJfMSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbiMjLmNvbmZvcm1lQXJ0aWNsZUw0NDIxXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBhdHJpbW9pbmUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcHJvZHVpc2FudFJldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbmVQcm9kdWlzYW50UGFzUmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0OlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBhdHJpbW9pbmVfdG9fanNvbyAocGF0cmltb2luZSA6IFBhdHJpbW9pbmUudCkgOiBwYXRyaW1vaW5lIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNFxuICAgICAgdmFsIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNFxuICAgICAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX29mX2pzb28gKHBhdHJpbW9pbmUgOiBwYXRyaW1vaW5lIEpzLnQpIDogUGF0cmltb2luZS50ID1cbiAgICB7XG4gICAgICBwcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwYXRyaW1vaW5lIyMucHJvZHVpc2FudFJldmVudVBlcmlvZGVSODIyMzNSODIyNDtcbiAgICAgIG5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwYXRyaW1vaW5lIyMubmVQcm9kdWlzYW50UGFzUmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbmRpdGlvbnNfZXRyYW5nZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28gKGNvbmRpdGlvbnNfZXRyYW5nZXJzXG4gICAgOiBDb25kaXRpb25zRXRyYW5nZXJzLnQpIDogY29uZGl0aW9uc19ldHJhbmdlcnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgY29uZGl0aW9uc19ldHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZVxuICAgICAgZW5kXG4gIGxldCBjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vXG4gICAgKGNvbmRpdGlvbnNfZXRyYW5nZXJzIDogY29uZGl0aW9uc19ldHJhbmdlcnMgSnMudCkgOlxuICAgIENvbmRpdGlvbnNFdHJhbmdlcnMudCA9XG4gICAge1xuICAgICAgc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjb25kaXRpb25zX2V0cmFuZ2VycyMjLnNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb29cbiAgICAocGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KVxuICAgIDogcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXMgPVxuICAgICAgICBKcy5ib29sIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXNcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llci5yZXNzb3VyY2VzXG4gICAgICBlbmRcbiAgbGV0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl9vZl9qc29vXG4gICAgKHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgICAgOiBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCkgOlxuICAgIFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQgPVxuICAgIHtcbiAgICAgIGR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICAgICAgICAjIy5kdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIjIy5yZXNzb3VyY2VzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGU6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQjIy5kYXRlQ291cmFudGU7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCMjLm1vbnRhbnRQcmltZURlbWVuYWdlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0IG1ldGhvZCByZXNzb3VyY2VzUHJpc2VzRW5Db21wdGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLnJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnQ6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIG1vbnRhbnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5tb250YW50IFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjI6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcbiAgICAgIHZhbCBwbGFmb25kTG95ZXJEODIzMTYyID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMlxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25NaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZVxuICAgICAgdmFsIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25QZXJzb25uZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5tb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2O1xuICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGxhZm9uZExveWVyRDgyMzE2MjtcbiAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGFydGljaXBhdGlvbk1pbmltYWxlO1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLnRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTtcbiAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMucGFydGljaXBhdGlvblBlcnNvbm5lbGxlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50KVxuICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm1vbnRhbnRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX29mX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSA6XG4gICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFJEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XG4gICAgICB2YWwgY29lZmZpY2llbnRSRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1XG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVcbiAgICAgIHZhbCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1O1xuICAgICAgY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5jb2VmZmljaWVudFJEODMyMjU7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTtcbiAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgICAgICMjLnBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llck1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjExOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5Ob21icmVQYXJ0c0Q4MzIxMSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLm5Ob21icmVQYXJ0c0Q4MzIxMVxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuc3VhbGl0ZUVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTA6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlRWxpZ2libGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGVcbiAgICAgIHZhbCBtZW5zdWFsaXRlTWluaW1hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGVcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTAgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLm1lbnN1YWxpdGVFbGlnaWJsZTtcbiAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGVfdG9fanNvbyAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlXG4gICAgOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCkgOiB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0ICh0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZV9vZl9qc29vXG4gICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSA6IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSBKcy50KSA6XG4gICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhbmNpZW5Mb3llclByaW5jaXBhbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgICAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhbmNpZW5Mb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsXG4gICAgICB2YWwgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgICA6IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpIDpcbiAgICBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICAgIHtcbiAgICAgIGFuY2llbl9sb3llcl9wcmluY2lwYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5Mb3llclByaW5jaXBhbDtcbiAgICAgIGFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2U6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llcjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxveWVyTWluaW1hbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llciA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5lcXVpdmFsZW5jZV9sb3llclxuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXG4gICAgICB2YWwgbG95ZXJNaW5pbWFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmxveWVyX21pbmltYWxcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICAgIHtcbiAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2U7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXI7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5tb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzO1xuICAgICAgbG95ZXJfbWluaW1hbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmxveWVyTWluaW1hbDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvbyAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50KSA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXRcbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgICB7XG4gICAgICBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIyMuYWdlT3V2ZXJ0dXJlRHJvaXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICAgIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudC5tb250YW50X2ltcGF5ZVxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ltcGF5ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCMjLm1vbnRhbnRJbXBheWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdG9fanNvbyAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50KSA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPSBKcy5ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGUgPSBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudClcbiAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBhaWRlRmluYWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUuYWlkZV9maW5hbGVcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gICAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIGFpZGVfZmluYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUjIy5haWRlRmluYWxlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pYyA9XG4gIG9iamVjdCBtZXRob2QgYnJ1dEhvcmFpcmU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX3RvX2pzb28gKHNtaWMgOiBTbWljLnQpIDogc21pYyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBicnV0SG9yYWlyZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBzbWljLmJydXRfaG9yYWlyZVxuICAgICAgZW5kXG4gIGxldCBzbWljX29mX2pzb28gKHNtaWMgOiBzbWljIEpzLnQpIDogU21pYy50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgc21pYyMjLmJydXRIb3JhaXJlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmV0X3RvX2pzb28gKHByZXQgOiBQcmV0LnQpIDogcHJldCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlUHJldCA9IHR5cGVfcHJldF90b19qc29vIHByZXQudHlwZV9wcmV0XG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZSA9IGRhdGVfdG9fanNvbyBwcmV0LmRhdGVfc2lnbmF0dXJlXG4gICAgICB2YWwgdGl0dWxhaXJlUHJldCA9IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gcHJldC50aXR1bGFpcmVfcHJldFxuICAgICAgZW5kXG4gIGxldCBwcmV0X29mX2pzb28gKHByZXQgOiBwcmV0IEpzLnQpIDogUHJldC50ID1cbiAgICB7XG4gICAgICB0eXBlX3ByZXQgPSB0eXBlX3ByZXRfb2ZfanNvbyBwcmV0IyMudHlwZVByZXQ7XG4gICAgICBkYXRlX3NpZ25hdHVyZSA9IGRhdGVfb2ZfanNvbyBwcmV0IyMuZGF0ZVNpZ25hdHVyZTtcbiAgICAgIHRpdHVsYWlyZV9wcmV0ID0gdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyBwcmV0IyMudGl0dWxhaXJlUHJldFxuICAgIH1cblxuY2xhc3MgdHlwZSBuZXVmX291X2FuY2llbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5ldWZcIlxuICAgICAgICAtIFwiQW5jaWVuXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyA6IE5ldWZPdUFuY2llbi50IC0+IG5ldWZfb3VfYW5jaWVuIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5ldWYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOZXVmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQW5jaWVuIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQW5jaWVuXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5ldWZfb3VfYW5jaWVuX29mX2pzb28gKG5ldWZfb3VfYW5jaWVuIDogbmV1Zl9vdV9hbmNpZW4gSnMudClcbiAgOiBOZXVmT3VBbmNpZW4udCA9XG4gIG1hdGNoIG5ldWZfb3VfYW5jaWVuIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTmV1ZlwiIC0+IE5ldWZPdUFuY2llbi5OZXVmICgpXG4gIHwgXCJBbmNpZW5cIiAtPlxuICBOZXVmT3VBbmNpZW4uQW5jaWVuIChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuZXVmX291X2FuY2llbiMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmV1Zk91QW5jaWVuLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHRyYW5jaGVfcmV2ZW51ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X3RvX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogVHJhbmNoZVJldmVudS50KVxuICAgIDogdHJhbmNoZV9yZXZlbnUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gdHJhbmNoZV9yZXZlbnUuaGF1dFxuICAgICAgdmFsIGJhcyA9IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCB0cmFuY2hlX3JldmVudS5iYXNcbiAgICAgIHZhbCB0YXV4ID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnUudGF1eFxuICAgICAgZW5kXG4gIGxldCB0cmFuY2hlX3JldmVudV9vZl9qc29vICh0cmFuY2hlX3JldmVudSA6IHRyYW5jaGVfcmV2ZW51IEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51LnQgPVxuICAgIHtcbiAgICAgIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIHRyYW5jaGVfcmV2ZW51IyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFuY2hlX3JldmVudSMjLmJhcztcbiAgICAgIHRhdXggPSBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudSMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBoYXV0OiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyAodHJhbmNoZV9yZXZlbnVfZGVjaW1hbFxuICAgIDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28gdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5oYXV0XG4gICAgICB2YWwgYmFzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5iYXNcbiAgICAgIHZhbCB0YXV4ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvb1xuICAgICh0cmFuY2hlX3JldmVudV9kZWNpbWFsIDogdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCBKcy50KSA6XG4gICAgVHJhbmNoZVJldmVudURlY2ltYWwudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5iYXM7XG4gICAgICB0YXV4ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcmVudGU6IHBhcmVudGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgOiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50KSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnJlc3NvdXJjZXNcbiAgICAgIHZhbCBhc2NlbmRhbnREZXNjZW5kYW50Q29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlXG4gICAgICB2YWwgcGFyZW50ZSA9IHBhcmVudGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5wYXJlbnRlXG4gICAgICB2YWwgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1ID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3VcbiAgICAgIHZhbCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS50aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlXG4gICAgICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgOiBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSBKcy50KSA6XG4gICAgQXV0cmVQZXJzb25uZUFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5kYXRlTmFpc3NhbmNlO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnJlc3NvdXJjZXM7XG4gICAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZVxuICAgICAgICAgICMjLmFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTtcbiAgICAgIHBhcmVudGUgPSBwYXJlbnRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXJlbnRlO1xuICAgICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5pbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2k7XG4gICAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMuYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U7XG4gICAgICB0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlID1cbiAgICAgICAgSnMudG9fYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgICAgLSBcIlBsdXNEZVRyb2lzRW5mYW50c1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X3RvX2pzb29cbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50IC0+IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE1vaW5zRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGx1c0RlVHJvaXNFbmZhbnRzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAoZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICA6IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnQpXG4gIDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCA9XG4gIG1hdGNoIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCIgLT5cbiAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzICgpXG4gIHwgXCJQbHVzRGVUcm9pc0VuZmFudHNcIiAtPlxuICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6XG4gICAgICB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlVXNlcjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVtcGxpdENvbmRpdGlvbnNSODMyMjE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZGV2YW5jZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2OlxuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfdG9fanNvbyAobG9nZW1lbnRfZm95ZXIgOiBMb2dlbWVudEZveWVyLnQpXG4gICAgOiBsb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlVXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBsb2dlbWVudF9mb3llci50eXBlX3VzZXJcbiAgICAgIHZhbCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGxvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFxuICAgICAgdmFsIGNvbnN0cnVpdEFwcGxpY2F0aW9uTG9pMTk1NzEySUlJID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudF9mb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJXG4gICAgICB2YWwgcmVkZXZhbmNlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTYgPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vIGxvZ2VtZW50X2ZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XG4gICAgICBlbmRcbiAgbGV0IGxvZ2VtZW50X2ZveWVyX29mX2pzb28gKGxvZ2VtZW50X2ZveWVyIDogbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgdHlwZV91c2VyID0gdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIGxvZ2VtZW50X2ZveWVyIyMudHlwZVVzZXI7XG4gICAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5yZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUk7XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy5kYXRlQ29udmVudGlvbm5lbWVudDtcbiAgICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMuY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk7XG4gICAgICByZWRldmFuY2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgbG9nZW1lbnRfZm95ZXIjIy5yZWRldmFuY2U7XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBsb2dlbWVudF9mb3llciMjLmNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaWRlbnRpZmlhbnQgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZVxuICAgICAgdmFsIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZGF0ZURlTmFpc3NhbmNlID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGlkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5pZGVudGlmaWFudDtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5vYmxpZ2F0aW9uU2NvbGFpcmU7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICBkYXRlX29mX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnByaXNlRW5DaGFyZ2U7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgICAgICMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkdhcmRlQWx0ZXJuZWU6XG4gICAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2FfY2hhcmdlX3RvX2pzb28gKGVuZmFudF9hX2NoYXJnZSA6IEVuZmFudEFDaGFyZ2UudClcbiAgICA6IGVuZmFudF9hX2NoYXJnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9hX2NoYXJnZS5pZGVudGlmaWFudFxuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9hX2NoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfYV9jaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2FfY2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgc2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9XG4gICAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2FfY2hhcmdlX29mX2pzb28gKGVuZmFudF9hX2NoYXJnZSA6IGVuZmFudF9hX2NoYXJnZSBKcy50KSA6XG4gICAgRW5mYW50QUNoYXJnZS50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9hX2NoYXJnZSMjLmlkZW50aWZpYW50O1xuICAgICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBlbmZhbnRfYV9jaGFyZ2UjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2FfY2hhcmdlIyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA9XG4gICAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMuc2l0dWF0aW9uR2FyZGVBbHRlcm5lZVxuICAgIH1cblxuY2xhc3MgdHlwZSB0eXBlX2JhaWxsZXVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJTb2NpYWxcIlxuICAgICAgICAtIFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCJcbiAgICAgICAgLSBcIkJhaWxsZXVyUHJpdmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2JhaWxsZXVyX3RvX2pzb28gOiBUeXBlQmFpbGxldXIudCAtPiB0eXBlX2JhaWxsZXVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEJhaWxsZXVyU29jaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJTb2NpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoY29udmVudGlvbl9hX25faF9hX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBCYWlsbGV1clByaXZlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJQcml2ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9iYWlsbGV1cl9vZl9qc29vICh0eXBlX2JhaWxsZXVyIDogdHlwZV9iYWlsbGV1ciBKcy50KVxuICA6IFR5cGVCYWlsbGV1ci50ID1cbiAgbWF0Y2ggdHlwZV9iYWlsbGV1ciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkJhaWxsZXVyU29jaWFsXCIgLT5cbiAgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHR5cGVfYmFpbGxldXIjIy5wYXlsb2FkKSlcbiAgfCBcIkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbFwiIC0+XG4gIFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgKGNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHR5cGVfYmFpbGxldXIjIy5wYXlsb2FkKSlcbiAgfCBcIkJhaWxsZXVyUHJpdmVcIiAtPiBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUJhaWxsZXVyLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTm9uXCJcbiAgICAgICAgLSBcIk91aVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb29cbiAgOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50IC0+IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfb2ZfanNvb1xuICAobG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgOiBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50KVxuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgPVxuICBtYXRjaCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk5vblwiIC0+IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiAoKVxuICB8IFwiT3VpXCIgLT5cbiAgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIG5hdGlvbmFsaXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRnJhbmNhaXNlXCJcbiAgICAgICAgLSBcIkV0cmFuZ2VyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG5hdGlvbmFsaXRlX3RvX2pzb28gOiBOYXRpb25hbGl0ZS50IC0+IG5hdGlvbmFsaXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEZyYW5jYWlzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkZyYW5jYWlzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0cmFuZ2VyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0cmFuZ2VyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5hdGlvbmFsaXRlX29mX2pzb28gKG5hdGlvbmFsaXRlIDogbmF0aW9uYWxpdGUgSnMudCkgOiBOYXRpb25hbGl0ZS50ID1cbiAgbWF0Y2ggbmF0aW9uYWxpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJGcmFuY2Fpc2VcIiAtPiBOYXRpb25hbGl0ZS5GcmFuY2Fpc2UgKClcbiAgfCBcIkV0cmFuZ2VyZVwiIC0+XG4gIE5hdGlvbmFsaXRlLkV0cmFuZ2VyZSAoY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuYXRpb25hbGl0ZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmF0aW9uYWxpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDaGFuZ2VtZW50XCJcbiAgICAgICAgLSBcIlBhc0RlQ2hhbmdlbWVudFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50IC0+IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENoYW5nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlQ2hhbmdlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAoY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KVxuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNoYW5nZW1lbnRcIiAtPlxuICBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMucGF5bG9hZCkpXG4gIHwgXCJQYXNEZUNoYW5nZW1lbnRcIiAtPiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByb3ByaWV0YWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50OiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1OlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25SODIyMTExMzE3OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZXRlTG9nZW1lbnQ6IG5ldWZfb3VfYW5jaWVuIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmV0OiBwcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByb3ByaWV0YWlyZV90b19qc29vIChwcm9wcmlldGFpcmUgOiBQcm9wcmlldGFpcmUudClcbiAgICA6IHByb3ByaWV0YWlyZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyID1cbiAgICAgICAgSnMuYm9vbCBwcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZVxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRcbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnQgPSBkYXRlX3RvX2pzb28gcHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNSA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gcHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIHByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy5ib29sIHByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVcbiAgICAgIHZhbCBjb3Byb3ByaWV0ZSA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLmNvcHJvcHJpZXRlXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxNyA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XG4gICAgICB2YWwgYW5jaWVubmV0ZUxvZ2VtZW50ID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyBwcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudFxuICAgICAgdmFsIHByZXQgPSBwcmV0X3RvX2pzb28gcHJvcHJpZXRhaXJlLnByZXRcbiAgICAgIGVuZFxuICBsZXQgcHJvcHJpZXRhaXJlX29mX2pzb28gKHByb3ByaWV0YWlyZSA6IHByb3ByaWV0YWlyZSBKcy50KSA6XG4gICAgUHJvcHJpZXRhaXJlLnQgPVxuICAgIHtcbiAgICAgIGxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgcHJvcHJpZXRhaXJlIyMubG9nZW1lbnRTaXR1ZUNvbW11bmVEZXNlcXVpbGlicmVMODMxMjtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwcm9wcmlldGFpcmUjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZTtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldDtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50ID0gZGF0ZV9vZl9qc29vIHByb3ByaWV0YWlyZSMjLmRhdGVFbnRyZWVMb2dlbWVudDtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLnR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU7XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMudHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1O1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlID1cbiAgICAgICAgSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5sb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTtcbiAgICAgIGNvcHJvcHJpZXRlID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5jb3Byb3ByaWV0ZTtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3ID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5zaXR1YXRpb25SODIyMTExMzE3O1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb28gcHJvcHJpZXRhaXJlIyMuYW5jaWVubmV0ZUxvZ2VtZW50O1xuICAgICAgcHJldCA9IHByZXRfb2ZfanNvbyBwcm9wcmlldGFpcmUjIy5wcmV0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qgbm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2U6XG4gICAgICBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzOlxuICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG4gICAgKGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQpXG4gICAgOiBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5vbWJyZUVuZmFudHNBTmFpdHJlQXByZXNUcm9pc2llbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudC5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2VcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzID1cbiAgICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfdG9fanNvbyBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXG4gICAgICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICA6IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgOlxuICAgIEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gICAge1xuICAgICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2U7XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyA9XG4gICAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICAgICAgIyMuZGF0ZU5haXNzYW5jZVRyb2lzaWVtZUVuZmFudE91RGVybmllclNpUGx1c1xuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRyb2l0X291dmVydCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgXG4gICAgICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9XG4gICAgICAgIGR1cmF0aW9uX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICAgIC0gXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBwZXJzb25uZV9hX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFbmZhbnRBQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGVuZmFudF9hX2NoYXJnZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKHBlcnNvbm5lX2FfY2hhcmdlIDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudClcbiAgOiBQZXJzb25uZUFDaGFyZ2UudCA9XG4gIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRW5mYW50QUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIChlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVQZXJzb25uZUFDaGFyZ2VcIiAtPlxuICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BlcnNvbm5lQUNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkZW1hbmRldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBkZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX3RvX2pzb28gZGVtYW5kZXVyLm5hdGlvbmFsaXRlXG4gICAgICB2YWwgcGF0cmltb2luZSA9IHBhdHJpbW9pbmVfdG9fanNvbyBkZW1hbmRldXIucGF0cmltb2luZVxuICAgICAgdmFsIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlXG4gICAgICBlbmRcbiAgbGV0IGRlbWFuZGV1cl9vZl9qc29vIChkZW1hbmRldXIgOiBkZW1hbmRldXIgSnMudCkgOiBEZW1hbmRldXIudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZGVtYW5kZXVyIyMuZGF0ZU5haXNzYW5jZTtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBkZW1hbmRldXIjIy5uYXRpb25hbGl0ZTtcbiAgICAgIHBhdHJpbW9pbmUgPSBwYXRyaW1vaW5lX29mX2pzb28gZGVtYW5kZXVyIyMucGF0cmltb2luZTtcbiAgICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyIyMucGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBiYWlsbGV1cjogdHlwZV9iYWlsbGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50RXN0Q2hhbWJyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29sb2NhdGlvbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvY2F0aW9uX3RvX2pzb28gKGxvY2F0aW9uIDogTG9jYXRpb24udCkgOiBsb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBiYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmVcbiAgICAgIHZhbCBjb2xvY2F0aW9uID0gSnMuYm9vbCBsb2NhdGlvbi5jb2xvY2F0aW9uXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMiA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMlxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBsb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgYmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX29mX2pzb28gbG9jYXRpb24jIy5iYWlsbGV1cjtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2NhdGlvbiMjLmxveWVyUHJpbmNpcGFsO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2NhdGlvbiMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXM7XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZSA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudEVzdENoYW1icmU7XG4gICAgICBjb2xvY2F0aW9uID0gSnMudG9fYm9vbCBsb2NhdGlvbiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBsb2NhdGlvbiMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudE1ldWJsZUQ4NDIyO1xuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIGxvY2F0aW9uIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0OlxuICAgICAgKHVuaXQsICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbjJSODIzNCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgXG4gICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfcjgyM180JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvY2F0aW9uXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICAgIC0gXCJMb2dlbWVudEZveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgLT4gY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2NhdGlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvY2F0aW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEFjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2dlbWVudF9mb3llcl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wgOiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9jYXRpb25cIiAtPlxuICBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKGxvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiQWNjZXNzaW9uUHJvcHJpZXRlXCIgLT5cbiAgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiTG9nZW1lbnRGb3llclwiIC0+XG4gIENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIChsb2dlbWVudF9mb3llcl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF90b19qc29vIChsb2dlbWVudCA6IExvZ2VtZW50LnQpIDogbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzaWRlbmNlUHJpbmNpcGFsZSA9IEpzLmJvb2wgbG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGVcbiAgICAgIHZhbCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXG4gICAgICB2YWwgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX3RvX2pzb28gbG9nZW1lbnQucHJvcHJpZXRhaXJlXG4gICAgICB2YWwgbG91ZU91U291c0xvdWVBRGVzVGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc190b19qc29vIGxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXG4gICAgICB2YWwgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC51c3VmcnVpdFxuICAgICAgdmFsIGxvZ2VtZW50RGVjZW50TDg5NDYyID0gSnMuYm9vbCBsb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlxuICAgICAgdmFsIHN1cmZhY2VNQ2FycmVzID0gaW50ZWdlcl90b19pbnQgbG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlc1xuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICB6b25lID0gem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBsb2dlbWVudCMjLnpvbmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgbWVuYWdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByZXN0YXRpb25zUmVjdWVzOlxuICAgICAgcHJlc3RhdGlvbl9yZWN1ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudDogbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2U6XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbWVuYWdlIyMuZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgdW5pdCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbjpcbiAgICAgICh1bml0LCAgdW5pdCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRSZXNpZGVuY2VQcmluY2lwYWxlSW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luIFxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbkxvZ2VtZW50U3VyZmFjZUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiB1bml0KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luIFxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBiZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuYmVuZWZpY2llQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNJbjpcbiAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbW1lbmFnZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbjpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaW5mb3JtYXRpb25zSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmluZm9ybWF0aW9uc19pblxuICAgICAgdmFsIGRhdGVFbW1lbmFnZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgaW5mb3JtYXRpb25zX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zSW47XG4gICAgICBkYXRlX2VtbWVuYWdlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVFbW1lbmFnZW1lbnRJbjtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgICAgICMjLmRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc0RlbWFuZGV1ckluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNDb25qb2ludEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjpcbiAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2VJbjpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW46XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzRGVtYW5kZXVySW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNDb25qb2ludEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19jb25qb2ludF9pblxuICAgICAgdmFsIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb28geCkgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIGNvbmpvaW50RXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luXG4gICAgICB2YWwgcGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pblxuICAgICAgdmFsIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW5cbiAgICAgIHZhbCBkYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXG4gICAgICB2YWwgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19kZW1hbmRldXJfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNEZW1hbmRldXJJbjtcbiAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNDb25qb2ludEluO1xuICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucGVyc29ubmVzVml2YW50SGFiaXR1ZWxsZW1lbnRGb3llckluO1xuICAgICAgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMucGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjtcbiAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luO1xuICAgICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW47XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbEJhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxveWVyUHJpbmNpcGFsQmFzZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudE1ldWJsZUQ4NDIySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgdHlwZUxvZ2VtZW50Rm95ZXJJbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIHZhbCBkYXRlQ29udmVudGlvbm5lbWVudEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnJlZGV2YW5jZV9pblxuICAgICAgbWV0aG9kIGNvbmRpdGlvbjJEdTgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gXG4gICAgICAgICAgKFxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlZGV2YW5jZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfZHVfODMyXzI1X2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50ID1cbiAgICB7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEluOlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVTaWduYXR1cmVQcmV0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlUHJldEluOiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudEluOiBuZXVmX291X2FuY2llbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW5cbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY29wcm9wcmlldGVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxN0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgdHlwZVByZXRJbiA9XG4gICAgICAgIHR5cGVfcHJldF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3ByZXRfaW5cbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnRJbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmFuY2llbm5ldGVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuY29wcm9wcmlldGVJbjtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuem9uZUluO1xuICAgICAgdHlwZV9wcmV0X2luID1cbiAgICAgICAgdHlwZV9wcmV0X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlUHJldEluO1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5hbmNpZW5uZXRlTG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxveWVyUHJpbmNpcGFsSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRFc3RDaGFtYnJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2xvY2F0aW9uSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50TWV1YmxlRDg0MjJJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbjpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbG95ZXJQcmluY2lwYWxJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxveWVyX3ByaW5jaXBhbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY29sb2NhdGlvbl9pblxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW5cbiAgICAgIHZhbCBsb2dlbWVudE1ldWJsZUQ4NDIySW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0SW4gPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG95ZXJQcmluY2lwYWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuem9uZUluO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMudHlwZUFpZGVJbjtcbiAgICAgIGNvbG9jYXRpb25faW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jb2xvY2F0aW9uSW47XG4gICAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW47XG4gICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb2dlbWVudE1ldWJsZUQ4NDIySW47XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTdJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZVByZXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50SW46XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb3Byb3ByaWV0ZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlUHJldEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZUluO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZVNpZ25hdHVyZVByZXRJbjtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50SW47XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlRW50cmVlTG9nZW1lbnRJbjtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5jaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjtcbiAgICAgIGNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy5jb3Byb3ByaWV0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVMb2dlbWVudEZveWVySW46IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb252ZW50aW9ubmVtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluOlxuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVMb2dlbWVudEZveWVySW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4udHlwZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXG4gICAgICB2YWwgcmVkZXZhbmNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ29udmVudGlvbm5lbWVudEluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy50eXBlQWlkZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVOYWlzc2FuY2VBc3N1cmVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUFzc3VyZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luXG4gICAgICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fb2ZfanNvb1xuICAgIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KSA6XG4gICAgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiMjLmRhdGVOYWlzc2FuY2VBc3N1cmVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVWZXJzZWVJbjogdmVyc2VtZW50X2EgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRBcGxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50Q2hhcmdlc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VMb2dlbWVudEluOiBkZXBlbnNlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50RGV0dGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvX2pzb28gKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCBhaWRlVmVyc2VlSW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmFpZGVfdmVyc2VlX2luXG4gICAgICB2YWwgbW9udGFudEFwbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfYXBsX2luXG4gICAgICB2YWwgbW9udGFudENoYXJnZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2NoYXJnZXNfaW5cbiAgICAgIHZhbCBkZXBlbnNlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgbW9udGFudERldHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9kZXR0ZV9pblxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIGFpZGVfdmVyc2VlX2luID1cbiAgICAgICAgdmVyc2VtZW50X2Ffb2ZfanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmFpZGVWZXJzZWVJbjtcbiAgICAgIG1vbnRhbnRfYXBsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudEFwbEluO1xuICAgICAgbW9udGFudF9jaGFyZ2VzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudENoYXJnZXNJbjtcbiAgICAgIGRlcGVuc2VfbG9nZW1lbnRfaW4gPVxuICAgICAgICBkZXBlbnNlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmRlcGVuc2VMb2dlbWVudEluO1xuICAgICAgbW9udGFudF9kZXR0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLm1vbnRhbnREZXR0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9IG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPSBtZW5hZ2Vfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmVzdGF0aW9uQ291cmFudGVJbjpcbiAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBwcmVzdGF0aW9uQ291cmFudGVJbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5wcmVzdGF0aW9uQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5cblxuXG5sZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50KVxuICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50ID1cbiAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICB8PiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KVxuICA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gIHw+IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHNtaWMgKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpXG4gIDogc21pYyBKcy50ID1cbiAgc21pY19pbiB8PiBzbWljX2luX29mX2pzb28gfD4gc21pYyB8PiBzbWljX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBaWRlc0xvZ2VtZW50TGliXCJcbiAgICAob2JqZWN0JWpzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA6IChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBvdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA6IChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgICAgXG4gICAgICBtZXRob2QgaW1wYXllRGVwZW5zZUxvZ2VtZW50IDogKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgLT4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBiYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBzbWljXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2tcbiAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgcmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyIDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA6IChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudCA6IChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50IDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50IDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA6IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgLT4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgXG4gICAgZW5kKSIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVuY2ggbGF3IGxpYnJhcnksIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgZm9yXG4gICBjb21wdXRpbmcgRnJlbmNoIHRheGVzIGFuZCBiZW5lZml0cyBkZXJpdmVkIGZyb20gQ2F0YWxhIHByb2dyYW1zLiBDb3B5cmlnaHRcbiAgIChDKSAyMDIxIElucmlhLCBjb250cmlidXRvcjogRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGVcbiAgIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gTGF3X3NvdXJjZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxubW9kdWxlIEFGID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xubW9kdWxlIEFGX3dlYiA9IEFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYlxubW9kdWxlIEFMID0gQWlkZXNfbG9nZW1lbnRcbm1vZHVsZSBBTF93ZWIgPSBBaWRlc19sb2dlbWVudF9hcGlfd2ViXG5cbmxldCBfID1cbiAgSnMuZXhwb3J0X2FsbFxuICAgIChvYmplY3QlanNcbiAgICAgICB2YWwgZXZlbnRzTWFuYWdlciA9IGV2ZW50X21hbmFnZXJcblxuICAgICAgIG1ldGhvZCBjb21wdXRlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXG4gICAgICAgICAgIDogKEFGX3dlYi5pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAtPiBmbG9hdCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+XG4gICAgICAgICAgICAgZXhlY3V0ZV9vcl90aHJvd19lcnJvciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmlNb250YW50VmVyc2UpKVxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBaWRlc0F1TG9nZW1lbnRcbiAgICAgICAgICAgOiAoQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT4gZmxvYXQpXG4gICAgICAgICAgICAgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgICAgICAgICAgICAgIHw+IEFMX3dlYi5jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmFpZGVGaW5hbGUpKVxuICAgIGVuZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 \ No newline at end of file +// Generated by js_of_ocaml 4.1.0 +(function(b){typeof +globalThis!=="object"&&(this?c():(b.defineProperty(b.prototype,"_T_",{configurable:true,get:c}),_T_));function +c(){var +c=this||self;c.globalThis=c;delete +b.prototype._T_}}(Object));(function(bz){"use strict";var +byT=bz,byU=typeof +module==="object"&&module.exports||bz,AO="38527",AP=4812,ru=424,c7=857,cp="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gc="Article L521-1",ks="Paragraphe 2 : Ouverture du droit et liquidation.",nu=365180284,AN="Changement",Gb="26714",f9=163,AM="redevance_in",o7="SaintMartin",Ga=1197,AL="1015",o6=891,d8="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AK="559500",b1="Article 1",cT="aide_finale_formule",AJ="35630",dE=122,ss="Article 31",k2="50",bf="Unexpected '",fU=299,F$="34700",jq=181,nt="Article 19",k1=305,jp=4442,cr=128,kr="Avant",rt="identifiant",o5="Oui",sr=1127,F_="43000",rs="Article D832-26",ns=459,nr=1005,o4=146,nq=">",o2=575,o3=941,F8=153,F9=1027,ea=297,AI=4437,o1="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",F7="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eU="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AH="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",o0="baseMensuelleAllocationsFamiliales",AG="35762",aL="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",A="Calcul du montant de l'allocation logement",F6=358,d0=2011,di=2023,dZ=295,F5=462,ih="Article L841-1",rr="ServicesSociauxAllocationVerseeALaFamille",F4=3685,AE="186000",AF="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",AD="16.25",rq="0.0315",kq="traitement_aide_finale_diminu\xc3\xa9",F3="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",np=720,AC="40758",k0=623,oZ="e",oX=692,oY=313,ig="Autre",AB=4382,ie=1150,F2="Article L822-2",AA=3909,jo=421,f8="smic",Az="39445",bC="Article D842-6",Ax=-43,Ay="Neuf",Aw=3097,Av=3235,sq="Article 27",F1="inf",F0="calculetteAidesAuLogementGardeAlternee",Au="27365",FZ="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",ex=685,At=4637,FY="41392",kZ=111,FX="Location",id=967,FW=4456,Ar="240400",As=269,sp=709,so="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",oW=619,FV="33500",jn=4836,kp="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",co="Article D823-9",bH="traitement_aide_finale_minoration_forfaitaire",rp="\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",FU="infinity",FT=1855,ic="2.5",FS="3663",Ap=1134,Aq=278,d$="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",Ao=3194,ew="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",An="\\t",FQ=3953,FR=2457,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Am="situation_r822_11_13_17_in",FP=385,aO="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",kY=112,ro=831,ib="1000",aw=563,c6="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",kX=701,Al="210600",FO="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",ia=1146,Ak="Couple",no="SaintPierreEtMiquelon",FN="loyer_minimal",h$=110,cn="PrestationsFamiliales",FM="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Aj=1103,FL="214700",FK=3973,dN="Calcul\xc3\x89quivalenceLoyerMinimale",Ai=2083,oV=554,FJ="42926",jm=1096,rn=265,Ah=-32,nn=4408,Ag="39016",oU="AllocationLogementFamiliale",d7=1023,FH=2601,FI="interfaceAllocationsFamiliales",jl=1076,nm="AllocationLogementSociale",Af=1974,Ae="plafond_l512_3_2",jk=639,rm="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aV="examples/allocations_familiales/decrets_divers.catala_fr",fT=117,Ad=348,kW="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",FF="240200",FG="Assert_failure",sn="Section 1 : Secteur locatif ordinaire",FE="568400",oT=496,sm="0.32",Ac="40961",FD=350,kV="Non",Ab=185,kU="Article R824-2",FC=219,FB=1e14,Aa="D331_76_1",jj=3489,oS="Article R521-3",z$="17607",$=2022,Fz="34865",FA="Fatal error: exception %s\n",z_="261800",oR=865,ko=740,fS="Article 2",fR=256,nl=558,z9="Article L521-3",Fy="Article R822-1",nk=874,z8="45064",Fx="taux_francs_vers_euros",fQ=1031,h_=367,kT="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oQ=699,sl="mensualit\xc3\xa9_\xc3\xa9ligible",Fw=1075,nj="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",sk="ENOENT",Fv=384,sj=1395,rk="0.0006",h8=3935,h9=315,ri="EnfantLePlus\xc3\x82g\xc3\xa9",rj=259,z7=2685,ni=751,nh=556,bv="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",z6="228000",ji=470,Fu="ENOTEMPTY",z5="copropri\xc3\xa9t\xc3\xa9_in",si="Article 13",Ft="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",z4="D331_59_8",Fr="Loyer",Fs="35947",z3=2540,jh=3486,eT=564,z2="brut_horaire",z1=172,oP=647,z0="Sous-section 1 : Aides personnelles au logement",Fq="calculAidePersonnaliseeLogementAccessionPropriete",sh=335,zZ=547,ce="Articles valables du 1er octobre 2020 au 31 septembre 2021",h7=509,kn="Article D755-5",Fp="Article D842-4",dD=314,sg="%d",h6=810,zY="Z.of_substring_base: invalid digit",Fo="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",Fn="logement_est_chambre_in",ng=285,zX="buffer.ml",f="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",zW=3640,Fm=4785,Fk="167600",Fl="39590",rh=832,Fj=3213,Fi=2565,gQ=2008,rg="0.0179",Fh=3505,oO=681,zV="245700",B="Prologue",dY=1029,zU=3366,nf="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fg="Metropole",cj=100,kS="prise_en_compte_personne_\xc3\xa0_charge",ne=702,fl=300,_="3",a7="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",zT=230,eS=413,Ff="835",oN="169.",zS="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",zR=0.5,Fe=4027,cQ="Article D521-1",Fc="conventionn\xc3\xa9_livre_III_titre_V_chap_III",eR=622,Fd="sous_calcul_traitement",nd=4769,zQ=374,oM="Article D842-11",dX="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",zP=4137,c1=107,zO=381,h5=161,oL=571,nc="Article D842-12",nb=937,oJ=690,oK="prestations_familiales",kR="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zN="26440",Fb=4726,jg=1111,Fa="201700",oI="Unix.Unix_error",zM=284,E_="calculAidePersonnaliseeLogement",eQ=553,E$=3970,h4=1088,zL="Stack_overflow",fb="condition_2_r823_4",a5="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aT="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",oH=4089,h3=3487,zJ=3460,zK="/static/",rf=253,km=894,E9="Not_found",zI="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",zH="851",zG="41268",aY="examples/allocations_familiales/epilogue.catala_fr",oG=695,E8="calcul_apl_logement_foyer.date_courante",cd=848054398,oF="Mayotte",E7="smic.date_courante",zE=1841,zF=260,oE="1224",E5="calcul_apl_locatif",E6=243,dz="calcul_plafond_mensualit\xc3\xa9_d832_10_3",gG=979,h2=1049,rc="rmdir",jf=1069,E3="participation_minimale",E4=32752,h1=4838,zD="33623",sf="19100",zC="37478",f7="calcul_nombre_parts",zB=3279,se="Article 23",oD="Article R842-5",zA=1026,E2="taux_composition_familiale",bO="montant",dW="Article L521-2",bt="examples/allocations_familiales/../smic/smic.catala_fr",zx="calculAllocationLogementLocatif",zy="37906",zz="false",oC="Invalid integer: ",zw="PasDeChangement",E1=2381,bu="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",zv=3325,a8=106,je=597,E0=346,kQ=875,h0=186,d6=0x80,eP="Chapitre 1er : Dispositions relatives aux prestations",sd="Fatal error: exception ",zu=4211,oB="\xc3\xa9ligibilit\xc3\xa9_commune",sc="0.0234",EZ="43378",zt="calcul_apl_logement_foyer.date_conventionnement",hZ=913,EY=234,zs=1413,zr=1054,sb="25978",dV=303,zq=1556,EX="Section 2 : R\xc3\xa8gles de non-cumul",hY="zone_in",sa="_",zn="eligibilitePrimeDeDemenagement",zo=517,zp=3143,rb="compare: functional value",b0="0.",zk=114,zl="40928",zm="19300",oA=1030,kP=721,zj="197700",zi="Invalid_argument",hX=4832,gF=823,EW="EndCall([ ",oz="0.9",EU="Article R822-22",EV="prise_en_charge",zh="calcul_aide_personnalis\xc3\xa9e_logement",zg=249,ES="34301",ET="577500",ze=3941,zf="%ni",fk=324,W=2020,zd=3783,ER="PersonneSeule",zc=1418,dU=559,ra="0.0238",r$="Article 9",EQ="225100",EO="AutresPersonnes",dn="6",EP=495,hW=808,zb="173600",na=858,o="0",ap="Section 3 : Logements-foyers",za="montant_forfaitaire_charges_d823_16",kl="Article L161-17-2",e="examples/aides_logement/prologue.catala_fr",EN="eligibiliteAidesPersonnelleLogement",gP=817,jd=604,bn=248,y$=1905,m$=341,oy=322,jc=651,jb=2007,EM="208200",y6="Zone1",y7="Locataire",y8=2245,hV=301,y9="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",y_="37457",EL="562800",y5="535744",EK=572,y4="235800",m_=555,EI=2412,EJ="resetLog",y3="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",y2="situation_familiale_calcul_apl",q$="GardeAlterneeAllocataireUnique",m9="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EG="haut",EH=1215,ja=4840,hU=1107,gE=1024,ox=1143,y0="204761",y1="3.1",r_="35780",yY="calculAidePersonnaliseeLogementFoyer",yZ=4470,EF=4484,ci=945,c0=366,fa=0xffffff,EE="34829",i$=1082,yX=524,i_=812,m8=876,i9="Titre III: Titre III : Dispositions communes relatives au financement",ED="36378",ax="Calculette globale",hT=286,EC="149600",f6=3775,yW=3370,kO="Article R824-1",cZ=1994,m7=465,EB=4568,hS=2010,bJ="Prologue : prestations familiales",yV=434,r9=2147483647,EA="774",yU=", characters ",f5=456,q_="180100",f4="BaseMensuelleAllocationsFamiliales",yT="prestations_familiales.r\xc3\xa9sidence",Ez="819",bl="Chapitre IV : Calcul des allocations de logement en secteur accession",yS="AllocationJournali\xc3\xa8rePresenceParentale",yR=".0",Ey=4038,Ex="36733",hR=977,q9="AllocationFamilialesAvril2008",yQ=328,i8=693,Ew="AllocationRentreeScolaire",q8="mensualit\xc3\xa9_minimale",kN="2.",m6=691,fj="5612",yP="Concubins",m5=578,dC="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",yO="date_entr\xc3\xa9e_logement_in",r8="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yN="SaintBarth\xc3\xa9lemy",aa="Partie l\xc3\xa9gislative",yM=357,hQ=2003,kk="Article R823-4",yL="32956",br="examples/allocations_familiales/securite_sociale_D.catala_fr",yK="294500",yJ=3085,q7="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",Ev=3051,dT="RessourcesAidesPersonnelleLogement",f3="Montant des plafonds de ressources",bq="Annexe",eO="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Eu=2913,Et="3524",yI="Article D832-27",Es=3553,i7=1101,yH="Zone3",kj="500",yG=471,Er=304,dM=2015,yF="40144",i6=581,Eq=4052,fi="prise_en_compte",Ep=3985,yE=3144,yD=65536,m4=718,Eo="223900",yC="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",i5=138,yB="225500",ow=1998,x="Livre VIII : Aides personnelles au logement",hP=905,ki="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",q6="nan",En="38892",yA=1276,m3=4401,Em=4649,yz="calculNombrePartLogementFoyer",m2=646,kM="Impay\xc3\xa9D\xc3\xa9penseLogement",be="Calculette avec garde altern\xc3\xa9e",El=0xdfff,hO="4.3",ev="/",Ek=4504,r7="ENOTDIR",Ej=1426,yy=273,yw=4191,yx="\\r",r6="0.0068",r5=513,ou=560,Ei="calcul_allocation_logement",ov=154,q5="coefficient_prise_en_charge",yu=4045,yv=206,Eh="1107",yt=3811,kL="Article D161-2-1-9",ot="Guyane",or="PasDeTravaux",os=311,m1=255,Eg="Revenu",bG="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c5="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",Ef="coefficient_r_d832_25",ys="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Ee="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yr="End_of_file",i4=4833,Ed="calcul_apl_logement_foyer.condition_2_du_832_25",yq="calculAllocationLogementFoyer",kh="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",e$="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",i3="Article 24",q4="Failure",Ec="267871",oq=630,yp="167800",Eb=2344,a4="CalculetteAidesAuLogement",D$=1865,Ea=1347,gD=684,m0=715,q3="\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",yo=0xdc00,yn="389618",op="3.",mZ=4803,D_=4844,ym="185800",r4="0.0201",oo=1072,D9="Sys_error",eN=130,yl=4003,fP="Article D521-2",D8=3587,mY=703,on=3595,r3="nombre_personnes_\xc3\xa0_charge_prises_en_compte",eu="Sous-section 4 : Assurance vieillesse",D6=3889,D7="Printexc.handle_uncaught_exception",cP="Article D832-24",kK=618,om="30500",yk="194810",mX="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yj="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",ol="Article 37",yi="39340",yh="name",cG=103,yf=4118,yg=447,i2=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kJ="traitement_aide_finale_redevance",D5=3951,i1=132,ye=" ])",D3="1.4",ch=698,i0=803,D4=4005,mV=648,mW="31797",yb="type_travaux_logement_in",yc="19484",yd=3210,mU=4770,ya=432,x_=3850,x$=4806,cD="Article 7",x9=": file descriptor already closed",D2="%Li",x8=3963,et=864,cS=1014,hN=616,q2="r\xc3\xa9muneration_mensuelle",dy=302,mT=960,x7=205,cC="Article 14",x6="34570",q1="date_de_naissance",iZ=1090,mS="base_mensuelle_allocations_familiales",iY=795,D0=2439,D1=927,x5=2380,mR="_z",x4=4866,iX=2000,r2=1951,hM=860,ok="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",x3=2269,kI=593,b4="Titre IV : Allocations de logement",eM=137,x2="retrieveRawEvents",d_="InterfaceAllocationsFamiliales",kg="Pendant",q0="%a",gC=", ",e_="5422",x1=199,c4=2018,DZ="17012",oj="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",x0="AllocationJournalierePresenceParentale",DY=3542,bT="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",DX="' kind for the enumeration 'ElementPrestationsFamiliales.t'",xZ=467,fO=682,bD="Prestations familiales",DU="Enfant\xc3\x80Charge",DV="calculette",DW="GardeAltern\xc3\xa9eAllocataireUnique",es="Article D823-16",DT="172500",iW=1109,r1="n_nombre_parts_d832_25",r0="Apres",fN=1032,hL=1084,xY=359,bF="examples/aides_logement/../prestations_familiales/prologue.catala_fr",oi=887,qZ=2187,mQ=706,DS="179800",fh=" ",K="Secteur locatif",DR="Undefined_recursive_module",ac="output",xX="195500",xW=1194,qY=1193,xV=2959,bA="Articles valables du 1er octobre 2021 au 30 juin 2022",DQ="base_mensuelle_allocations_familiales.date_courante",qX="199900",kf=752,qW=1424,cB=-976970511,xT="' kind for the enumeration 'SituationObligationScolaire.t'",xU="%.16g",DP="220100",oh=189,xS=4422,ke="droit_ouvert_forfaitaire",gB=620,xR="%i",qV="0.01",DO="262985",xQ="409505",xP="LogementFoyer",DN="139700",og="PrestationAccueilJeuneEnfant",oe=629,DM="Article L822-4",of=856,mP=521,xO="41252",iV=640,DK="0.1",DL="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",od=382,mO="5399",qU="2805",DJ=337,dx=123,hK=152,xN="calcul_apl_logement_foyer.type_logement_foyer",hJ="0.0173",gA=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",xM=159,xL="LocationAccession",mN=577,DI=183,qT="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DH="41338",dw=0xff,eL=139,xK=2217,mM="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DG=-12,mL="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",DF=4852,mK=458,kd=704,xJ=191,mJ="Article 15",dh="0.75",kc="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",DE="22355",mI=3654863,DD="140800",rZ="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",er=455,DC=1997,xI="163000",kb="0.5",oc="Article R842-14",gz=641,xH="fd ",xG=1116,DB=2203,xF="41751",xE="181800",mH=871,rY=409,xC="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xD="41316",bI="traitement_aide_finale_contributions_sociales_arrondi",mG=993,xB="cat\xc3\xa9gorie_calcul_apl",xA="757",b9="Prise en compte des ressources pour les aides personnelles au logement",gy=827,kH="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",DA=1290,fM=2001,qS="Compl\xc3\xa9mentFamilial",hI=793,xz=633,Dz="smic.r\xc3\xa9sidence",xy=3260,ay="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",mF=108,Dy="Article D832-18",mE=-2147483648,eK=2002,z="1",xx="Chapitre II : Dispositions applicables aux ressources",mD="Article R822-7",Dx="42605",xv="VendeurQuandDemandeurAContratLocationAccession",xw="Article R755-0-2",qR=406,Dw="calculNombrePartsAccessionPropriete",Dv="allocationFamilialesAvril2008",rX=": Not a directory",xu="b",Dt="18900",Du="Article D521-3",cO="CalculAidePersonnalis\xc3\xa9eLogement",xt="D331_63_64",dS=2012,Dr="42469",Ds="Out_of_memory",E="examples/aides_logement/code_construction_reglementaire.catala_fr",iU=504,ag="4",Dq=": closedir failed",rW="index out of bounds",Dp=2379,xs=3886,gx=911,Dn="27900",Do=3481,iT=903,ob="_bigarr02",ka=1006,Dm=3178,fL=975,xr="31264",hH=4441,Dl="LaR\xc3\xa9union",xq=3531,mC="Article L822-5",hG=574,Dk="981600",hE=3771,hF=292,eq=0xffff,iS=2009,Dj="%.17g",xo=1806,mB="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xp=400,xn=1965,hD=1148,c3="100.",Dg="1.25",Dh=143,Di=4100,ai="input0",xm="44729",xl=1310,eJ="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",hC=963043957,P="5",dg=142,dR=126,iR="AllocationSoutienFamilial",xi=2575,xj=4919,xk=840,Df="SousLocataire",xh="34713",oa=628,ba="Section 1 : Calcul, liquidation et versement des aides",kG=124,De=3550,xg="0.98",gw="Article L512-3",Dc=2182,Dd=1626,xf="633129",fK=422,iQ=917,xe="41440",dm="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dB="Sous-section 2 : Calcul de l'aide en secteur locatif",xd=2393,j$=252,Db="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",at="CalculAidePersonnalis\xc3\xa9eLogementFoyer",ep=".",Da=0xf0,xc="eligibilitePrestationsFamiliales",cF="12.",mA="Guadeloupe",xb=276,C$=4884,bp=116,n$="230500",xa="enfantLePlusAge",n_=576,mz=627,dl=365,fg="traitement_aide_finale_montant_minimal",dk=294,w$="impossible case",dQ="examples/allocations_familiales/securite_sociale_R.catala_fr",C_=968,eI="R\xc3\xa8gles diverses",C9=3280,my=500,C8=-1080,C7="18185",w_="closedir",gv=1098,w9="SaintBarthelemy",gO=1063,j_=747,C6=-1023,C4="type_logement_foyer_in",n9=859,C5=221,gu="1272",w8="ressources_m\xc3\xa9nage_avec_arrondi",C2="ouvertureDroitsRetraite",C3="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iP=3773,C1="204700",rV="Article L755-12",w7="TravauxPourAcquisitionD832_15_1",C0="Ancien",rU="lib/read.mll",w6=4411,gN="1229",n8=939,CZ="Article premier",mx=501,aX="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",CY=1788,w5=4051,hB=4842,mw='"',CX="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",mv="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cN="CalculAllocationLogement",w4=231,hA=4448,CW="3539",rT="<",w1="208500",w2="prestations_familiales.date_courante",w3=0x800,n7=869,w0=617,mu=182,wZ=398,rS=331,n6="\xc3\xa9ligibilit\xc3\xa9",ff=1152,wX="233000",wY=0.012,wW="calculAidePersonnaliseeLogementLocatif",bS="Article 33",n5=719,CU=3005,CV="M\xc3\xa9tropole",hz=842,CS="40696",CT=209,wV=131,CR="ressources_m\xc3\xa9nage_arrondies_seuil",wU=204,rR="Article D815-1",iO="conditions_hors_\xc3\xa2ge",eH="traitement_aide_finale_abattement",bb="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",wS=726928360,cc=562,wT="221100",e9=165,wR="([^/]+)",CQ="plafond_loyer_d823_16_2",mt=700,hy=909,CP="Article 39",rQ=0xf,wQ="798",CO="BailleurSocial",j9="montant_initial_m\xc3\xa9tropole_majoration",n4=372,fe=125,ms=818,kF="ressources_m\xc3\xa9nage_arrondies_in",iN=907,wP="Division_by_zero",f2=1092,rP=4171,qQ="Article L832-3",cM=402,gM=430,wO=708012133,CM=3976,CN="SituationObligationScolaire",mr=877,CL=4076,CJ="AutrePersonne\xc3\x80Charge",CK="44440",mq=532,wN=3158,CI="AllocationJeuneEnfant",kE=566,dL=2014,dK=552,wM=4660,CG="22262",CH=3797,hx="date_courante_in",CF="Article D842-17",iM=380,iL=973,iJ=697,CE="Article L751-1",iK=503,rO=119,j8="montant_avec_garde_altern\xc3\xa9e_majoration",CD="70",n3=412,dP=104,wK="calculette_sans_garde_altern\xc3\xa9e",wL="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",n2=321,wJ="version_avril_2008",iI=468,wI="38361",CC=439,fJ=2013,wH=2714,CA="ouverture_droits_retraite",CB=102,wG="mensualit\xc3\xa9_principale_in",Cz="997500",hw="100000.",wF="18261",fI=101,n1="calcul_nombre_parts.situation_familiale_calcul_apl",Cy="participation_personnelle",Cw=494,Cx="body",fH="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wE="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rN="\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",gL=1e7,wD=3415,hv=1156,j7=254,Cu=2333,Cv="calcul_apl_logement_foyer.zone",qP=407,Ct="6.",wC="1003",dv="Article L841-2",rM=" : flags Open_text and Open_binary are not compatible",d5="Article D832-15",eo="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wB="43248",ht=4444,hu=1158,gK=1992,eG="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wA="\\\\",w="Code de la construction et de l'habitation",wz="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",Cs="Article 38",wx=2297,wy=188,ww=4898,Cp=463,Cq=160,Cr="0.04",wv="0.0226",qO=270,wu="192500",Co=3820,Cm=3346,Cn="230700",wt="217600",Cl="0.0463",qN="GardeAlterneePartageAllocations",f1=519,qM="\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,dj="droit_ouvert",H="Champs d'applications",hs=1105,ws=479,bj="ContributionsSocialesAidesPersonnelleLogement",iH="Article D832-10",bk="Interface du programme",qL=-97,iG=944,aN="examples/aides_logement/archives.catala_fr",iF=469,wr="218700",qJ="Article D823-20",qK="ServicesSociauxAllocationVerseeAuxServicesSociaux",Ck=2486,kD="d\xc3\xa9pense_nette_minimale_d832_27",iE=195,en="1.",gt=1094,wq="45200",df="d\xc3\xa9pense_nette_minimale",qI="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wp=2226,j6="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",nY=141,rL="Article D823-17",Cj="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",nX="AllocationLogement",wn="5186",wo="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",iD=1113,gs=1065,hr=155,nW=518,Ci="calcul_apl_logement_foyer.situation_familiale_calcul_apl",wl="142303",mp=316,wm="37778",d4=296,eF=565,wk=4964,iC=799,nV=215,d3="Article D832-11",wj="LaReunion",kC=947,hq=971,wi=4736,Ch="AgrandirOuRendreHabitableD331_63",aB="Montant du salaire minimum de croissance",mo=557,iB=3283,kB=621,qH="0.3",wh="true",bc="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",iA=426,ab="Titre II : Dispositions communes aux aides personnelles au logement",Cf=214,Cg="25116",j5="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qG="1500",wg=" is too large for shifting.",Ce="237200",nT=502,nU=1068,mm="242800",mn="Map.bal",rK="5208",Cd="0.08",wf="@[",af="Titre III : Aide personnalis\xc3\xa9e au logement",Cc="Apr\xc3\xa8s",ad="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Cb="42892",ml=688,mk="ml_z_overflow",we="1.8",Ca=807,kA="contributions_sociales.date_courante",B$=4973,wd=307,mj=309,wc="calcul_apl_logement_foyer.redevance",B_=-752863768,B8=904,nS=705,rI="202500",rJ="Article D832-17",B9=360,B5="Article 10",B6="allocationsFamiliales",B7="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",wb="582700",eE=167,hp=915,B4="4986",nR=274,aC="CalculAidePersonnalis\xc3\xa9eLogementLocatif",eD="abattement_d\xc3\xa9pense_nette_minimale",B2=3769,B3="Sys_blocked_io",mi=548,wa=450,qF="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gr="Chapitre 2 : Champ d'application",v$="0.0588",nQ="Chapitre 2 : Champ d'application.",rH=362,v_=3757,iz=3939,iy=3281,f0=457,B1="49",v9=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",by="Article D842-15",B0=1010,nP=892,ix="nombre_personnes_\xc3\xa0_charge_in",v8=246,v6="37900",v7="%u",mh="Article L831-1",mg="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fG="calcul_\xc3\xa9quivalence_loyer_minimale",fF=298,v5=4273,BY="Article 40",BZ=4034,nO=405,b3="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",v4="19402",X="2",ho=127,v2="Article 30",v3="@{",cb="Montant de la base mensuelle des allocations familiales",qE=" : flags Open_rdonly and Open_wronly are not compatible",v1="0.232",rG="OuvertureDroitsRetraite",vZ="Zone2",v0="43505",nN="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cE="-",BX="type_aide_in",vY="n_nombre_parts_d832_11",qD=" : file already exists",BW=2364,nM=1070,j4="EffectiveEtPermanente",vX="1127",BU="calculAllocationLogementAccessionPropriete",BV="41481",e8="0.0045",mf=595,fE="Date d'ouverture des droits \xc3\xa0 la retraite",hn=866,BT="retrieveEvents",vW="20165",iw="situation_familiale_calcul_apl_in",BS="2699",me=625,vU="Infini",vV="prestationsFamiliales",fD="Article 43",vT="\\b",vS=3730,ak="Titre IV : Allocations de Logement",md="Martinique",b2=404,cq="Article D832-25",vR=487,BR=2322,mc=942,vQ=12520,BQ="Collectivit\xc3\xa9",BP="42228",hm=981,cg="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aM="Chapitre 1er : Allocations familiales",hl=2016,vP="AllocationEducationEnfantHandicape",BO="832200",vO=1408,kz=963,BN="AllocationRentr\xc3\xa9eScolaire",eC=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",ae="",rF=737456202,iv="Sous-section 2 : Principes de neutralisation et d'abattement",nL=1142,BM="^",mb="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j3=746,hk=0x3f,BL="' kind for the enumeration 'Collectivite.t'",vN=4281,rE="184000",vM="251500",qC=334,dO="Article 16",BK="Article D842-9",vL="Match_failure",vK=3130,vJ=716,BJ=3189,as=2021,vH=2345,hj=4446,vI=" : is a directory",iu="0.085",kx="d\xc3\xa9pense_nette_minimale_d832_10",ky="CalculNombrePartLogementFoyer",vF=1241,vG=1436,BI="35130",j2="montant_initial_majoration",fd="+",BH=2551,BF=4206,BG="1057",BE=179,vE=3916,BD="%li",hi="Smic",BB="colocation_in",BC="234600",vD=2313,vC="logement_meubl\xc3\xa9_d842_2_in",nK=1003,BA="39051",vB="20900",nJ="calcul_apl_logement_foyer",rD="208600",ma=373,vA=267,l$=431,Bz="impayeDepenseLogement",hh=801,nI=962,By="calcul_nombre_parts.condition_2_du_832_25",hg=1086,vz=0xe0,l_=873,Bw=2650,Bx="20100",Bv="D331_32",eB="contributions_sociales",nH=1136,Bu="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vy=225,l9=250,vx="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qB="Article L831-2",J="Allocations familiales",kw=707,nG=893,fZ=1034,it=1080,qA="0.027",vv="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vw="allocations_familiales",rC=1255,is="Article 8",bN="examples/allocations_familiales/securite_sociale_L.catala_fr",vu=245,bB=2019,nF="Article R521-1",rB="jsError",eA=0x8000,bi="Chapitre Ier : Champ d'application",Bt="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",nE=964,Bs="43074",fC=946,vt="6.55957",ir=1161,vs="eligibiliteAidePersonnaliseeLogement",l8="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",iq=969,fB=371,fA=320,gq=814,Br=129,kv="abattement_d\xc3\xa9pense_nette_minimale_d832_27",vr=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qz="3.7",Bq=483,fY=414,l7=310,bM="Tous secteurs",vp="Article 34",b7="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vq=1033,ip=2005,Bp=-48,qy="9",qx="EBADF",vo=4141,ku=415,Bo="1025",cf="camlinternalFormat.ml",nD=312,Y=686,nC=943,Bn="132000",qw="0.0185",vn="924600",cY=2017,vm=1124,Bm="date_naissance",cR=317,gJ=821,l6="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",d9="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",rA="obligation_scolaire",vl="EEXIST",Bl="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",fX=293,ez=550,kt=961,Bk="prestations_familiales.prestation_courante",io=1154,nB=1999,Bh="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bi=1406,Bj="\\n",l5=1858,vk=333,du=120,l4="16",Bf="23138",Bg="Article D832-14",nA=512,im=724,vj=0x7ff0,vi="eligibiliteAllocationLogement",qv="montant_forfaitaire_charges",em="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rz=177,vg=228,vh="\xc3\xa9quivalence_loyer_minimale",vf="0x",Be="Ascendant",l3="0.005",nz=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",l1=499,l2="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",ny=645,Bd="40888",vd="bas",ve="0.208",l0=957,vc="date_conventionnement_in",vb="210900",Bc="219900",av="traitement_aide_finale",u$="r\xc3\xa9gime_outre_mer_l751_1",bd=105,va="Invalid function call ([ ",u_="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",ey=551,lZ="Article R512-2",lY=1135,Bb="31664",bm="direct",u9="44693",Ba=1520,hf="0.45",qu="2710",u8=1165,A$=1914,gp=429,c2=158,fc="input",u7="39839",A_="\xc3\xa9ligibilit\xc3\xa9_logement",qt="0.2",cL=157,cy=364,lX="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",u6=390,nx=498,A9=4586,e7="examples/aides_logement/autres_sources.catala_fr",A8=283,u5="calculAllocationLogement",qs="mkdir",gI=379,go="Article L822-3",a2="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",lW=661,he=825,il=592,nw=": No such file or directory",u4="\xc3\xa9quivalence_loyer",hd=378,u3=655,fW="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gH="Titre 5 : D\xc3\xa9partements d'outre-mer",u2="766",u1=2355,cK="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",hc=151,A7="calculetteAidesAuLogement",ry="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",qr=1137,A6="Descendant",b8="\xc3\x89ligibilit\xc3\xa9AllocationLogement",a$="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",A5=3832,hb=919,A4="\xc3\xa9ligibilit\xc3\xa9_apl",u0="taux",qq="Demandeur",bg="CalculAllocationLogementLocatif",A3="BeginCall([ ",lV=868,rx=822,j1="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A2="GardeAltern\xc3\xa9ePartageAllocations",A1="coefficient_multiplicateur_d832_25",ik=3937,aZ="\xc3\x89pilogue",A0=1931,ao="CalculAllocationLogementFoyer",AZ="943900",ij=983,AY="bmaf",AX="calculEquivalenceLoyerMinimale",fV=867,lT=2006,g$="0.95",lU=749,ha=472,AV="contributionsSocialesAidesPersonnelleLogement",AW="ressourcesAidesPersonnelleLogement",aQ=863,uZ="Pervasives.do_at_exit",AU="222300",qp="ComplementFamilial",j0=1001,AT="225000",uY=3736,uX="date_signature_pr\xc3\xaat_in",uW="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rw="0.0283",rv="0.16",lS=643,aP="Article 18",uV=3105,ii=418,AS="36815",nv=134,AR=1167,g_=1078,dA="Section 2 : Conditions relatives aux ressources",AQ=2109,aJ="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function +bx$(e,c,f,d,a){if(d<=c)for(var +b=1;b<=a;b++)f[d+b]=e[c+b];else +for(var +b=a;b>=1;b--)f[d+b]=e[c+b];return 0}function +pl(d,c,b){var +e=String.fromCharCode;if(c==0&&b<=4096&&b==d.length)return e.apply(null,d);var +f=ae;for(;0=c.l||c.t==2&&d>=c.c.length)){c.c=e.t==4?pl(e.c,f,d):f==0&&e.c.length==d?e.c:e.c.substr(f,d);c.t=c.c.length==c.l?0:2}else +if(c.t==2&&a==c.c.length){c.c+=e.t==4?pl(e.c,f,d):f==0&&e.c.length==d?e.c:e.c.substr(f,d);c.t=c.c.length==c.l?0:2}else{if(c.t!=4)o$(c);var +g=e.c,h=c.c;if(e.t==4)if(a<=f)for(var +b=0;b=0;b--)h[a+b]=g[f+b];else{var +i=Math.min(d,g.length-f);for(var +b=0;b>=1;if(c==0)return e;b+=b;d++;if(d==9)b.slice(0,1)}}function +jt(b){if(b.t==2)b.c+=jw(b.l-b.c.length,"\0");else +b.c=pl(b.c,0,b.c.length);b.t=0}function +GJ(b){if(b.length<24){for(var +c=0;cho)return false;return true}else +return!/[^\x00-\x7f]/.test(b)}function +byP(f){for(var +j=ae,d=ae,g,a,h,b,c=0,i=f.length;cnA){d.substr(0,1);j+=d;d=ae;j+=f.slice(c,e)}else +d+=f.slice(c,e);if(e==i)break;c=e}b=1;if(++c=0xd7ff&&b<0xe000)b=2}else{b=3;if(++c0x10ffff)b=3}}}}}if(b<4){c-=b;d+="\ufffd"}else +if(b>eq)d+=String.fromCharCode(0xd7c0+(b>>10),yo+(b&0x3FF));else +d+=String.fromCharCode(b);if(d.length>gE){d.substr(0,1);j+=d;d=ae}}return j+d}function +eV(d,b,c){this.t=d;this.c=b;this.l=c}eV.prototype.toString=function(){switch(this.t){case +9:return this.c;default:jt(this);case +0:if(GJ(this.c)){this.t=9;return this.c}this.t=8;case +8:return this.c}};eV.prototype.toUtf16=function(){var +b=this.toString();if(this.t==9)return b;return byP(b)};eV.prototype.slice=function(){var +b=this.t==4?this.c.slice():this.c;return new +eV(this.t,b,this.l)};function +Gl(b){return new +eV(0,b,b.length)}function +b(b){return Gl(b)}function +sH(d,c){byJ(d,b(c))}var +d1=[0];function +bP(b){sH(d1.Invalid_argument,b)}function +byc(){bP(rW)}function +bU(b,d,c){c&=dw;if(b.t!=4){if(d==b.c.length){b.c+=String.fromCharCode(c);if(d+1==b.l)b.t=0;return 0}o$(b)}b.c[d]=c;return 0}function +js(c,b,d){if(b>>>0>=c.l)byc();return bU(c,b,d)}function +o8(b,c){switch(b.t&6){default:if(c>=b.c.length)return 0;case +0:return b.c.charCodeAt(c);case +4:return b.c[c]}}function +dF(c,b){if(c.fun)return dF(c.fun,b);if(typeof +c!=="function")return c;var +d=c.length|0;if(d===0)return c.apply(null,b);var +f=b.length|0,e=d-f|0;if(e==0)return c.apply(null,b);else +if(e<0)return dF(c.apply(null,b.slice(0,d)),b.slice(d));else +return function(){var +f=arguments.length==0?1:arguments.length,e=new +Array(b.length+f);for(var +d=0;d>>0>=b.length-1)k4();return b}function +o9(b){if(isFinite(b)){if(Math.abs(b)>=2.2250738585072014e-308)return 0;if(b!=0)return 1;return 2}return isNaN(b)?4:3}function +byf(){return[0]}function +b_(b){if(b<0)bP("Bytes.create");return new +eV(b?2:9,ae,b)}function +k_(b){throw b}function +k$(){k_(d1.Division_by_zero)}function +Go(c,b){if(b==0)k$();return c/b|0}function +eX(b){b.t&6&&jt(b);return b.c}var +byW=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function +GI(b){if(byW)return Math.floor(Math.log2(b));var +c=0;if(b==0)return-Infinity;if(b>=1)while(b>=2){b/=2;c++}else +while(b<1){b*=2;c--}return c}function +sz(d){var +b=new +Float32Array(1);b[0]=d;var +c=new +Int32Array(b.buffer);return c[0]|0}var +Gv=Math.pow(2,-24);function +aR(c,d,b){this.lo=c&fa;this.mi=d&fa;this.hi=b&eq}aR.prototype.caml_custom="_j";aR.prototype.copy=function(){return new +aR(this.lo,this.mi,this.hi)};aR.prototype.ucompare=function(b){if(this.hi>b.hi)return 1;if(this.hib.mi)return 1;if(this.mib.lo)return 1;if(this.lod)return 1;if(cb.mi)return 1;if(this.mib.lo)return 1;if(this.lo>24),d=-this.hi+(c>>24);return new +aR(b,c,d)};aR.prototype.add=function(b){var +c=this.lo+b.lo,d=this.mi+b.mi+(c>>24),e=this.hi+b.hi+(d>>24);return new +aR(c,d,e)};aR.prototype.sub=function(b){var +c=this.lo-b.lo,d=this.mi-b.mi+(c>>24),e=this.hi-b.hi+(d>>24);return new +aR(c,d,e)};aR.prototype.mul=function(b){var +c=this.lo*b.lo,d=(c*Gv|0)+this.mi*b.lo+this.lo*b.mi,e=(d*Gv|0)+this.hi*b.lo+this.mi*b.mi+this.lo*b.hi;return new +aR(c,d,e)};aR.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};aR.prototype.isNeg=function(){return this.hi<<16<0};aR.prototype.and=function(b){return new +aR(this.lo&b.lo,this.mi&b.mi,this.hi&b.hi)};aR.prototype.or=function(b){return new +aR(this.lo|b.lo,this.mi|b.mi,this.hi|b.hi)};aR.prototype.xor=function(b){return new +aR(this.lo^b.lo,this.mi^b.mi,this.hi^b.hi)};aR.prototype.shift_left=function(b){b=b&63;if(b==0)return this;if(b<24)return new +aR(this.lo<>24-b,this.hi<>24-b);if(b<48)return new +aR(0,this.lo<>48-b);return new +aR(0,0,this.lo<>b|this.mi<<24-b,this.mi>>b|this.hi<<24-b,this.hi>>b);if(b<48)return new +aR(this.mi>>b-24|this.hi<<48-b,this.hi>>b-24,0);return new +aR(this.hi>>b-48,0,0)};aR.prototype.shift_right=function(b){b=b&63;if(b==0)return this;var +d=this.hi<<16>>16;if(b<24)return new +aR(this.lo>>b|this.mi<<24-b,this.mi>>b|d<<24-b,this.hi<<16>>b>>>16);var +c=this.hi<<16>>31;if(b<48)return new +aR(this.mi>>b-24|this.hi<<48-b,this.hi<<16>>b-24>>16,c&eq);return new +aR(this.hi<<16>>b-32,c,c)};aR.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fa;this.lo=this.lo<<1&fa};aR.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fa;this.mi=(this.mi>>>1|this.hi<<23)&fa;this.hi=this.hi>>>1};aR.prototype.udivmod=function(f){var +d=0,c=this.copy(),b=f.copy(),e=new +aR(0,0,0);while(c.ucompare(b)>0){d++;b.lsl1()}while(d>=0){d--;e.lsl1();if(c.ucompare(b)>=0){e.lo++;c=c.sub(b)}b.lsr1()}return{quotient:e,modulus:c}};aR.prototype.div=function(b){var +c=this;if(b.isZero())k$();var +e=c.hi^b.hi;if(c.hi&eA)c=c.neg();if(b.hi&eA)b=b.neg();var +d=c.udivmod(b).quotient;if(e&eA)d=d.neg();return d};aR.prototype.mod=function(c){var +b=this;if(c.isZero())k$();var +e=b.hi;if(b.hi&eA)b=b.neg();if(c.hi&eA)c=c.neg();var +d=b.udivmod(c).modulus;if(e&eA)d=d.neg();return d};aR.prototype.toInt=function(){return this.lo|this.mi<<24};aR.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aR.prototype.toArray=function(){return[this.hi>>8,this.hi&dw,this.mi>>16,this.mi>>8&dw,this.mi&dw,this.lo>>16,this.lo>>8&dw,this.lo&dw]};aR.prototype.lo32=function(){return this.lo|(this.mi&dw)<<24};aR.prototype.hi32=function(){return this.mi>>>8&eq|this.hi<<16};function +ga(c,d,b){return new +aR(c,d,b)}function +pc(b){if(!isFinite(b)){if(isNaN(b))return ga(1,0,vj);return b>0?ga(0,0,vj):ga(0,0,0xfff0)}var +a=b==0&&1/b==-Infinity?eA:b>=0?0:eA;if(a)b=-b;var +c=GI(b)+d7;if(c<=0){c=0;b/=Math.pow(2,-zA)}else{b/=Math.pow(2,c-F9);if(b<16){b*=2;c-=1}if(c==0)b/=2}var +e=Math.pow(2,24),d=b|0;b=(b-d)*e;var +f=b|0;b=(b-f)*e;var +g=b|0;d=d&rQ|a|c<<4;return ga(g,f,d)}function +k7(b){return b.toArray()}function +Gj(d,c,g){d.write(32,c.dims.length);d.write(32,c.kind|c.layout<<8);if(c.caml_custom==ob)for(var +b=0;b>4;if(d==2047)return(a|g|c&rQ)==0?c&eA?-Infinity:Infinity:NaN;var +f=Math.pow(2,-24),b=(a*f+g)*f+(c&rQ);if(d>0){b+=16;b*=Math.pow(2,d-F9)}else +b*=Math.pow(2,-zA);if(c&eA)b=-b;return b}function +st(c){var +e=c.length,d=1;for(var +b=0;b>>24&dw|(b&eq)<<8,b>>>16&eq)}function +sB(b){return b.hi32()}function +sC(b){return b.lo32()}var +byb=ob;function +f_(d,e,c,b){this.kind=d;this.layout=e;this.dims=c;this.data=b}f_.prototype.caml_custom=byb;f_.prototype.offset=function(c){var +d=0;if(typeof +c==="number")c=[c];if(!(c +instanceof +Array))bP("bigarray.js: invalid offset");if(this.dims.length!=c.length)bP("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var +b=0;b=this.dims[b])k4();d=d*this.dims[b]+c[b]}else +for(var +b=this.dims.length-1;b>=0;b--){if(c[b]<1||c[b]>this.dims[b])k4();d=d*this.dims[b]+(c[b]-1)}return d};f_.prototype.get=function(b){switch(this.kind){case +7:var +e=this.data[b*2+0],c=this.data[b*2+1];return Gu(e,c);case +10:case +11:var +f=this.data[b*2+0],d=this.data[b*2+1];return[j7,f,d];default:return this.data[b]}};f_.prototype.set=function(b,c){switch(this.kind){case +7:this.data[b*2+0]=sC(c);this.data[b*2+1]=sB(c);break;case +10:case +11:this.data[b*2+0]=c[1];this.data[b*2+1]=c[2];break;default:this.data[b]=c;break}return 0};f_.prototype.fill=function(c){switch(this.kind){case +7:var +d=sC(c),f=sB(c);if(d==f)this.data.fill(d);else +for(var +b=0;be)return 1;if(d!=e){if(!g)return NaN;if(d==d)return 1;if(e==e)return-1}}break;case +7:for(var +b=0;bc.data[b+1])return 1;if(this.data[b]>>>0>>0)return-1;if(this.data[b]>>>0>c.data[b]>>>0)return 1}break;case +2:case +3:case +4:case +5:case +6:case +8:case +9:case +12:for(var +b=0;bc.data[b])return 1}break}return 0};function +jr(d,e,c,b){this.kind=d;this.layout=e;this.dims=c;this.data=b}jr.prototype=new +f_();jr.prototype.offset=function(b){if(typeof +b!=="number")if(b +instanceof +Array&&b.length==1)b=b[0];else +bP("Ml_Bigarray_c_1_1.offset");if(b<0||b>=this.dims[0])k4();return b};jr.prototype.get=function(b){return this.data[b]};jr.prototype.set=function(b,c){this.data[b]=c;return 0};jr.prototype.fill=function(b){this.data.fill(b);return 0};function +Gf(d,e,b,c){var +f=Gh(d);if(st(b)*f!=c.length)bP("length doesn't match dims");if(e==0&&b.length==1&&f==1)return new +jr(d,e,b,c);return new +f_(d,e,b,c)}function +dp(c){if(!d1.Failure)d1.Failure=[bn,b(q4),-3];sH(d1.Failure,c)}function +Gg(c,v,r){var +i=c.read32s();if(i<0||i>16)dp("input_value: wrong number of bigarray dimensions");var +p=c.read32s(),j=p&dw,o=p>>8&1,h=[];if(r==ob)for(var +b=0;b>>32-15;b=jv(b,0x1b873593);c^=b;c=c<<13|c>>>32-13;return(c+(c<<2)|0)+(0xe6546b64|0)|0}function +bym(b,c){b=ec(b,sC(c));b=ec(b,sB(c));return b}function +Gt(b,c){return bym(b,pc(c))}function +Gi(d){var +c=st(d.dims),e=0;switch(d.kind){case +2:case +3:case +12:if(c>fR)c=fR;var +f=0,b=0;for(b=0;b+4<=d.data.length;b+=4){f=d.data[b+0]|d.data[b+1]<<8|d.data[b+2]<<16|d.data[b+3]<<24;e=ec(e,f)}f=0;switch(c&3){case +3:f=d.data[b+2]<<16;case +2:f|=d.data[b+1]<<8;case +1:f|=d.data[b+0];e=ec(e,f)}break;case +4:case +5:if(c>cr)c=cr;var +f=0,b=0;for(b=0;b+2<=d.data.length;b+=2){f=d.data[b+0]|d.data[b+1]<<16;e=ec(e,f)}if((c&1)!=0)e=ec(e,d.data[b]);break;case +6:if(c>64)c=64;for(var +b=0;b64)c=64;for(var +b=0;b32)c=32;c*=2;for(var +b=0;b64)c=64;for(var +b=0;b32)c=32;for(var +b=0;b0?c(d,a,f):c(a,d,f);if(f&&b!=b)return e;if(+b!=+b)return+b;if((b|0)!=0)return b|0}return e}function +pf(b){return b +instanceof +eV}function +sD(b){return pf(b)}function +Gn(b){if(typeof +b==="number")return eC;else +if(pf(b))return j$;else +if(sD(b))return 1252;else +if(b +instanceof +Array&&b[0]===b[0]>>>0&&b[0]<=m1){var +c=b[0]|0;return c==j7?0:c}else +if(b +instanceof +String)return vQ;else +if(typeof +b=="string")return vQ;else +if(b +instanceof +Number)return eC;else +if(b&&b.caml_custom)return rC;else +if(b&&b.compare)return 1256;else +if(typeof +b=="function")return 1247;else +if(typeof +b=="symbol")return 1251;return j0}function +gb(b,c){if(bc.c?1:0}function +sJ(b,c){return Gk(b,c)}function +o_(b,c,e){var +f=[];for(;;){if(!(e&&b===c)){var +a=Gn(b);if(a==l9){b=b[1];continue}var +g=Gn(c);if(g==l9){c=c[1];continue}if(a!==g){if(a==eC){if(g==rC)return Gm(b,c,-1,e);return-1}if(g==eC){if(a==rC)return Gm(c,b,1,e);return 1}return ac)return 1;if(b!=c){if(!e)return NaN;if(b==b)return 1;if(c==c)return-1}break;case +1001:if(bc)return 1;if(b!=c){if(!e)return NaN;if(b==b)return 1;if(c==c)return-1}break;case +1251:if(b!==c){if(!e)return NaN;return 1}break;case +1252:var +b=eX(b),c=eX(c);if(b!==c){if(bc)return 1}break;case +12520:var +b=b.toString(),c=c.toString();if(b!==c){if(bc)return 1}break;case +246:case +254:default:if(b.length!=c.length)return b.length1)f.push(b,c,1);break}}if(f.length==0)return 0;var +h=f.pop();c=f.pop();b=f.pop();if(h+10)if(d==0&&(c>=b.l||b.t==2&&c>=b.c.length))if(e==0){b.c=ae;b.t=2}else{b.c=jw(c,String.fromCharCode(e));b.t=c==b.l?0:2}else{if(b.t!=4)o$(b);for(c+=d;d0&&c===c)return c;b=b.replace(/_/g,ae);c=+b;if(b.length>0&&c===c||/^[+-]?nan$/i.test(b))return c;var +d=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(b);if(d){var +e=d[3].replace(/0+$/,ae),a=parseInt(d[1]+d[2]+e,16),f=(d[5]|0)-4*e.length;c=a*Math.pow(2,f);return c}if(/^\+?inf(inity)?$/i.test(b))return Infinity;if(/^-inf(inity)?$/i.test(b))return-Infinity;dp("float_of_string")}function +sG(e){e=eX(e);var +f=e.length;if(f>31)bP("format_int: format too long");var +b={justify:fd,signstyle:cE,filler:fh,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +d=0;d=0&&c<=9){b.width=b.width*10+c;d++}d--;break;case".":b.prec=0;d++;while(c=e.charCodeAt(d)-48,c>=0&&c<=9){b.prec=b.prec*10+c;d++}d--;case"d":case"i":b.signedconv=true;case"u":b.base=10;break;case"x":b.base=16;break;case"X":b.base=16;b.uppercase=true;break;case"o":b.base=8;break;case"e":case"f":case"g":b.signedconv=true;b.conv=c;break;case"E":case"F":case"G":b.signedconv=true;b.uppercase=true;b.conv=c.toLowerCase();break}}return b}function +sx(c,a){if(c.uppercase)a=a.toUpperCase();var +f=a.length;if(c.signedconv&&(c.sign<0||c.signstyle!=cE))f++;if(c.alternate){if(c.base==8)f+=1;if(c.base==16)f+=2}var +d=ae;if(c.justify==fd&&c.filler==fh)for(var +e=f;e20){d-=20;b/=Math.pow(10,d);b+=new +Array(d+1).join(o);if(c>0)b=b+ep+new +Array(c+1).join(o);return b}else +return b.toFixed(c)}}var +b,f=sG(i),e=f.prec<0?6:f.prec;if(d<0||d==0&&1/d==-Infinity){f.sign=-1;d=-d}if(isNaN(d)){b=q6;f.filler=fh}else +if(!isFinite(d)){b=F1;f.filler=fh}else +switch(f.conv){case"e":var +b=d.toExponential(e),c=b.length;if(b.charAt(c-3)==oZ)b=b.slice(0,c-1)+o+b.slice(c-1);break;case"f":b=j(d,e);break;case"g":e=e?e:1;b=d.toExponential(e-1);var +h=b.indexOf(oZ),g=+b.slice(h+1);if(g<-4||d>=1e21||d.toFixed(0).length>e){var +c=h-1;while(b.charAt(c)==o)c--;if(b.charAt(c)==ep)c--;b=b.slice(0,c+1)+b.slice(h);c=b.length;if(b.charAt(c-3)==oZ)b=b.slice(0,c-1)+o+b.slice(c-1);break}else{var +a=e;if(g<0){a-=g+1;b=d.toFixed(a)}else +while(b=d.toFixed(a),b.length>e+1)a--;if(a){var +c=b.length-1;while(b.charAt(c)==o)c--;if(b.charAt(c)==ep)c--;b=b.slice(0,c+1)}}break}return sx(f,b)}function +pa(f,d){if(eX(f)==sg)return b(ae+d);var +c=sG(f);if(d<0)if(c.signedconv){c.sign=-1;d=-d}else +d>>>=0;var +e=d.toString(c.base);if(c.prec>=0){c.filler=fh;var +a=c.prec-e.length;if(a>0)e=jw(a,o)+e}return sx(c,e)}var +GB=0;function +c9(){return GB++}function +byj(b){if(b==0||!isFinite(b))return[0,b,0];var +d=b<0;if(d)b=-b;var +c=Math.max(-d7,GI(b)+1);b*=Math.pow(2,-c);while(b=1){b*=zR;c++}if(d)b=-b;return[0,b,c]}function +ed(b){return b.toUtf16()}function +la(){return typeof +bz.process!=="undefined"&&typeof +bz.process.versions!=="undefined"&&typeof +bz.process.versions.node!=="undefined"}function +byX(){function +b(b){if(b.charAt(0)===ev)return[ae,b.substring(1)];return}function +c(d){var +g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,b=g.exec(d),c=b[1]||ae,f=Boolean(c&&c.charAt(1)!==":");if(Boolean(b[2]||f)){var +e=b[1]||ae,a=b[2]||ae;return[e,d.substring(e.length+a.length)]}return}return la()&&bz.process&&bz.process.platform?bz.process.platform==="win32"?c:b:b}var +sQ=byX();function +GG(b){return b.slice(-1)!==ev?b+ev:b}if(la()&&bz.process&&bz.process.cwd)var +k5=bz.process.cwd().replace(/\\/g,ev);else +var +k5="/static";k5=GG(k5);function +byB(b){b=ed(b);if(!sQ(b))b=k5+b;var +f=sQ(b),e=f[1].split(ev),c=[];for(var +d=0;d1)c.pop();break;case".":break;case"":break;default:c.push(e[d]);break}c.unshift(f[0]);c.orig=b;return c}function +byQ(f){for(var +a=ae,c=a,b,h,d=0,g=f.length;dnA){c.substr(0,1);a+=c;c=ae;a+=f.slice(d,e)}else +c+=f.slice(d,e);if(e==g)break;d=e}if(b>6);c+=String.fromCharCode(d6|b&hk)}else +if(b<0xd800||b>=El)c+=String.fromCharCode(vz|b>>12,d6|b>>6&hk,d6|b&hk);else +if(b>=0xdbff||d+1==g||(h=f.charCodeAt(d+1))El)c+="\xef\xbf\xbd";else{d++;b=(b<<10)+h-0x35fdc00;c+=String.fromCharCode(Da|b>>18,d6|b>>12&hk,d6|b>>6&hk,d6|b&hk)}if(c.length>gE){c.substr(0,1);a+=c;c=ae}}return a+c}function +bye(b){var +c=9;if(!GJ(b))c=8,b=byQ(b);return new +eV(c,b,b.length)}function +aS(b){return bye(b)}var +bzc=["E2BIG","EACCES","EAGAIN",qx,"EBUSY","ECHILD","EDEADLK","EDOM",vl,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",sk,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",r7,Fu,"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 +fp(e,a,f,b){var +c=bzc.indexOf(e);if(c<0){if(b==null)b=-9999;c=[0,b]}var +d=[c,aS(a||ae),aS(f||ae)];return d}var +Gz={};function +ee(b){return Gz[b]}function +fo(c,b){throw[0,c].concat(b)}function +su(b){if(!(b +instanceof +Uint8Array))b=new +Uint8Array(b);return new +eV(4,b,b.length)}function +a9(b){sH(d1.Sys_error,b)}function +GD(b){a9(b+nw)}function +sM(b){if(b.t!=4)o$(b);return b.c}function +dG(b){return b.l}function +Gd(){}function +cU(b){this.data=b}cU.prototype=new +Gd();cU.prototype.constructor=cU;cU.prototype.truncate=function(b){var +c=this.data;this.data=b_(b|0);fm(c,0,this.data,0,b)};cU.prototype.length=function(){return dG(this.data)};cU.prototype.write=function(c,e,g,b){var +d=this.length();if(c+b>=d){var +f=b_(c+b),a=this.data;this.data=f;fm(a,0,this.data,0,d)}fm(su(e),g,this.data,c,b);return 0};cU.prototype.read=function(c,f,a,b){var +d=this.length();if(c+b>=d)b=d-c;if(b){var +e=b_(b|0);fm(this.data,c,e,0,b);f.set(sM(e),a)}return b};function +gR(d,b,c){this.file=b;this.name=d;this.flags=c}gR.prototype.err_closed=function(){a9(this.name+x9)};gR.prototype.length=function(){if(this.file)return this.file.length();this.err_closed()};gR.prototype.write=function(d,b,e,c){if(this.file)return this.file.write(d,b,e,c);this.err_closed()};gR.prototype.read=function(d,b,e,c){if(this.file)return this.file.read(d,b,e,c);this.err_closed()};gR.prototype.close=function(){this.file=undefined};function +cz(c,b){this.content={};this.root=c;this.lookupFun=b}cz.prototype.nm=function(b){return this.root+b};cz.prototype.create_dir_if_needed=function(e){var +d=e.split(ev),c=ae;for(var +b=0;b>1|1;if(h=0)}function +byn(b,d,k){if(!isFinite(b)){if(isNaN(b))return aS(q6);return aS(b>0?FU:"-infinity")}var +i=b==0&&1/b==-Infinity?1:b>=0?0:1;if(i)b=-b;var +e=0;if(b==0);else +if(b<1)while(b<1&&e>-1022){b*=2;e--}else +while(b>=2){b/=2;e++}var +j=e<0?ae:fd,f=ae;if(i)f=cE;else +switch(k){case +43:f=fd;break;case +32:f=fh;break;default:break}if(d>=0&&d<13){var +g=Math.pow(2,d*4);b=Math.round(b*g)/g}var +c=b.toString(16);if(d>=0){var +h=c.indexOf(ep);if(h<0)c+=ep+jw(d,o);else{var +a=h+1+d;if(c.length>24&fa,b>>31&eq)}function +byy(b){return b.toInt()}function +bys(b){return+b.isNeg()}function +byv(b){return b.neg()}function +byq(g,d){var +b=sG(g);if(b.signedconv&&bys(d)){b.sign=-1;d=byv(d)}var +c=ae,h=byw(b.base),a="0123456789abcdef";do{var +f=d.udivmod(h);d=f.quotient;c=a.charAt(byy(f.modulus))+c}while(!byt(d));if(b.prec>=0){b.filler=fh;var +e=b.prec-c.length;if(e>0)c=jw(e,o)+c}return sx(b,c)}function +byx(b,c){return b.or(c)}function +pd(b){return b.toFloat()}function +byH(d){var +b=0,f=aK(d),c=10,e=1;if(f>0)switch(dq(d,b)){case +45:b++;e=-1;break;case +43:b++;e=1;break}if(b+1=48&&b<=57)return b-48;if(b>=65&&b<=90)return b-55;if(b>=97&&b<=dE)return b-87;return-1}function +pe(a){var +h=byH(a),d=h[0],i=h[1],e=h[2],g=aK(a),j=-1>>>0,f=d=e)dp(mX);var +b=c;for(d++;d=e)break;b=e*b+c;if(b>j)dp(mX)}if(d!=g)dp(mX);b=i*b;if(e==10&&(b|0)!=b)dp(mX);return b|0}function +gc(b){return b.slice(1)}function +gS(d){var +e=d.length,c=new +Array(e+1);c[0]=0;for(var +b=0;b0){var +e=new +Array(c);for(var +b=0;bd7){b-=d7;c*=Math.pow(2,d7);if(b>d7){b-=d7;c*=Math.pow(2,d7)}}if(b<-d7){b+=d7;c*=Math.pow(2,-d7)}c*=Math.pow(2,b);return c}function +Gw(b,c){return+(o_(b,c,false)<0)}function +k8(c){c=eX(c);var +e=c.length/2,d=new +Array(e);for(var +b=0;b>16;return d}function +sE(c,t,b){var +n=2,o=3,r=5,e=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!c.lex_default){c.lex_base=k8(c[m]);c.lex_backtrk=k8(c[l]);c.lex_check=k8(c[p]);c.lex_trans=k8(c[s]);c.lex_default=k8(c[q])}var +f,d=t,k=sM(b[n]);if(d>=0){b[h]=b[r]=b[e];b[g]=-1}else +d=-d-1;for(;;){var +a=c.lex_base[d];if(a<0)return-a-1;var +i=c.lex_backtrk[d];if(i>=0){b[h]=b[e];b[g]=i}if(b[e]>=b[o])if(b[j]==0)return-d-1;else +f=fR;else{f=k[b[e]];b[e]++}if(c.lex_check[a+f]==d)d=c.lex_trans[a+f];else +d=c.lex_default[d];if(d<0){b[e]=b[h];if(b[g]==-1)dp("lexing: empty token");else +return b[g]}else +if(f==fR)b[j]=0}}function +ph(b,e){if(b<0)k4();var +b=b+1|0,c=new +Array(b);c[0]=0;for(var +d=1;d0&&c>=0&&c+b<=d.length&&d[c+b-1]==10)b--;var +e=b_(b);fm(su(d),c,e,0,b);this.log(e.toUtf16());return 0}a9(this.fd+x9)};k3.prototype.read=function(d,b,e,c){a9(this.fd+": file descriptor is write only")};k3.prototype.close=function(){this.log=undefined};function +pn(c,b){if(b==undefined)b=pm.length;pm[b]=c;return b}function +bzd(d,c,a){var +b={};while(c){switch(c[1]){case +0:b.rdonly=1;break;case +1:b.wronly=1;break;case +2:b.append=1;break;case +3:b.create=1;break;case +4:b.truncate=1;break;case +5:b.excl=1;break;case +6:b.binary=1;break;case +7:b.text=1;break;case +8:b.nonblock=1;break}c=c[2]}if(b.rdonly&&b.wronly)a9(eX(d)+qE);if(b.text&&b.binary)a9(eX(d)+rM);var +e=GP(d),f=e.device.open(e.rest,b);return pn(f,undefined)}(function(){function +b(b,c){return la()?byO(b,c):new +k3(b,c)}pn(b(0,{rdonly:1,altname:"/dev/stdin",isCharacterDevice:true}),0);pn(b(1,{buffered:2,wronly:1,isCharacterDevice:true}),1);pn(b(2,{buffered:2,wronly:1,isCharacterDevice:true}),2)}());function +byD(d){var +b=pm[d];if(b.flags.wronly)a9(xH+d+" is writeonly");var +e=null,c={file:b,offset:b.flags.append?b.length():0,fd:d,opened:true,out:false,buffer_curr:0,buffer_max:0,buffer:new +Uint8Array(yD),refill:e};fn[c.fd]=c;return c.fd}function +Gx(d){var +b=pm[d];if(b.flags.rdonly)a9(xH+d+" is readonly");var +e=b.flags.buffered!==undefined?b.flags.buffered:1,c={file:b,offset:b.flags.append?b.length():0,fd:d,opened:true,out:true,buffer_curr:0,buffer:new +Uint8Array(yD),buffered:e};fn[c.fd]=c;return c.fd}function +byE(){var +c=0;for(var +b=0;bb.buffer.length){var +f=new +Uint8Array(b.buffer_curr+c.length);f.set(b.buffer);b.buffer=f}switch(b.buffered){case +0:b.buffer.set(c,b.buffer_curr);b.buffer_curr+=c.length;eY(d);break;case +1:b.buffer.set(c,b.buffer_curr);b.buffer_curr+=c.length;if(b.buffer_curr>=b.buffer.length)eY(d);break;case +2:var +e=c.lastIndexOf(10);if(e<0){b.buffer.set(c,b.buffer_curr);b.buffer_curr+=c.length;if(b.buffer_curr>=b.buffer.length)eY(d)}else{b.buffer.set(c.subarray(0,e+1),b.buffer_curr);b.buffer_curr+=e+1;eY(d);b.buffer.set(c.subarray(e+1),b.buffer_curr);b.buffer_curr+=c.length-e-1}break}return 0}function +sF(c,b,e,d){return byF(c,f$(b),e,d)}function +Gy(d,c){var +e=b(String.fromCharCode(c));sF(d,e,0,1);return 0}function +k9(b,c){return+(o_(b,c,false)!=0)}function +GA(e,d){var +c=new +Array(d+1);c[0]=e;for(var +b=1;b<=d;b++)c[b]=0;return c}function +pj(b){if(b +instanceof +Array&&b[0]==b[0]>>>0)return b[0];else +if(pf(b))return j$;else +if(sD(b))return j$;else +if(b +instanceof +Function||typeof +b=="function")return 247;else +if(b&&b.caml_custom)return m1;else +return eC}function +d2(c,d,b){if(b&&bz.toplevelReloc)c=bz.toplevelReloc(b);d1[c+1]=d;if(b)d1[b]=d}function +sI(b,c){Gz[eX(b)]=c;return 0}function +byK(b){b[2]=GB++;return b}function +byd(b,c){if(b===c)return 1;b.t&6&&jt(b);c.t&6&&jt(c);return b.c==c.c?1:0}function +sK(b,c){return byd(b,c)}function +byM(){bP(rW)}function +bK(c,b){if(b>>>0>=aK(c))byM();return dq(c,b)}function +M(b,c){return 1-sK(b,c)}function +byN(){return 0x7FFFFFFF/4|0}function +byI(){k_(d1.Not_found)}function +GF(d){var +c=bz.process,b=ed(d);if(c&&c.env&&c.env[b]!=undefined)return aS(c.env[b]);if(bz.jsoo_static_env&&bz.jsoo_static_env[b])return aS(bz.jsoo_static_env[b]);byI()}function +sL(b){var +c=1;while(b&&b.joo_tramp){b=b.joo_tramp.apply(null,b.joo_args);c++}return b}function +cs(c,b){return{joo_tramp:c,joo_args:b}}function +GE(b){return b}function +p(b){if(b +instanceof +Array)return b;if(bz.RangeError&&b +instanceof +bz.RangeError&&b.message&&b.message.match(/maximum call stack/i))return GE(d1.Stack_overflow);if(bz.InternalError&&b +instanceof +bz.InternalError&&b.message&&b.message.match(/too much recursion/i))return GE(d1.Stack_overflow);if(b +instanceof +bz.Error&&ee(rB))return[0,ee(rB),b];return[0,d1.Failure,aS(String(b))]}var +ar=function(y){"use strict";var +a=gL,$=7,s=9007199254740992,H=p(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=byT.BigInt,F=typeof +g==="function";function +e(b,c,d,a){if(typeof +b==="undefined")return e[0];if(typeof +c!=="undefined")return+c===10&&!d?f(b):ad(b,c,d,a);return f(b)}function +b(c,b){this.value=c;this.sign=b;this.isSmall=false;this.caml_custom=mR}b.prototype=Object.create(e.prototype);function +c(b){this.value=b;this.sign=b<0;this.isSmall=true;this.caml_custom=mR}c.prototype=Object.create(e.prototype);function +d(b){this.value=b;this.caml_custom=mR}d.prototype=Object.create(e.prototype);function +n(b){return-s0)return Math.floor(b);return Math.ceil(b)}function +N(g,h){var +i=g.length,j=h.length,f=new +Array(i),c=0,e=a,d,b;for(b=0;b=e?1:0;f[b]=d-c*e}while(b0)f.push(c);return f}function +t(b,c){if(b.length>=c.length)return N(b,c);return N(c,b)}function +A(g,b){var +h=g.length,e=new +Array(h),d=a,f,c;for(c=0;c0){e[c++]=b%d;b=Math.floor(b/d)}return e}b.prototype.add=function(a){var +c=f(a);if(this.sign!==c.sign)return this.subtract(c.negate());var +d=this.value,e=c.value;if(c.isSmall)return new +b(A(d,Math.abs(e)),this.sign);return new +b(t(d,e),this.sign)};b.prototype.plus=b.prototype.add;c.prototype.add=function(g){var +a=f(g),d=this.value;if(d<0!==a.sign)return this.subtract(a.negate());var +e=a.value;if(a.isSmall){if(n(d+e))return new +c(d+e);e=p(Math.abs(e))}return new +b(A(e,Math.abs(d)),d<0)};c.prototype.plus=c.prototype.add;d.prototype.add=function(b){return new +d(this.value+f(b).value)};d.prototype.plus=d.prototype.add;function +w(e,h){var +g=e.length,i=h.length,d=new +Array(g),f=0,j=a,b,c;for(b=0;b=0)d=w(f,a);else{d=w(a,f);e=!e}d=l(d);if(typeof +d==="number"){if(e)d=-d;return new +c(d)}return new +b(d,e)}function +E(h,m,k){var +j=h.length,d=new +Array(j),i=-m,g=a,f,e;for(f=0;f=0)};c.prototype.minus=c.prototype.subtract;d.prototype.subtract=function(b){return new +d(this.value-f(b).value)};d.prototype.minus=d.prototype.subtract;b.prototype.negate=function(){return new +b(this.value,!this.sign)};c.prototype.negate=function(){var +d=this.sign,b=new +c(-this.value);b.sign=!d;return b};d.prototype.negate=function(){return new +d(-this.value)};b.prototype.abs=function(){return new +b(this.value,false)};c.prototype.abs=function(){return new +c(Math.abs(this.value))};d.prototype.abs=function(){return new +d(this.value>=0?this.value:-this.value)};function +L(g,j){var +i=g.length,l=j.length,n=i+l,d=B(n),m=a,f,e,b,h,k;for(b=0;b0){f[c++]=b%d;b=Math.floor(b/d)}return f}function +W(d,c){var +b=[];while(c-->0)b.push(0);return b.concat(d)}function +C(c,d){var +b=Math.max(c.length,d.length);if(b<=30)return L(c,d);b=Math.ceil(b/2);var +a=c.slice(b),e=c.slice(0,b),i=d.slice(b),h=d.slice(0,b),f=C(e,h),g=C(a,i),k=C(t(e,a),t(h,i)),j=t(t(f,W(w(w(k,f),g),b)),W(g,2*b));q(j);return j}function +aj(b,c){return-(wY*b)-wY*c+0.000015*b*c>0}b.prototype.multiply=function(j){var +h=f(j),d=this.value,c=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(c===0)return e[0];if(c===1)return this;if(c===-1)return this.negate();g=Math.abs(c);if(g=0;e--){j=g-1;if(c[e+h]!==m)j=Math.floor((c[e+h]*g+c[e+h-1])/m);d=0;f=0;n=i.length;for(b=0;bh)e=(e+1)*i;d=Math.ceil(e/o);do{j=u(c,d);if(m(j,b)<=0)break;d--}while(d);f.push(d);b=w(b,j)}f.reverse();return[l(f),l(b)]}function +O(i,f){var +g=i.length,h=B(g),j=a,b,e,c,d;c=0;for(b=g-1;b>=0;--b){d=c*j+i[b];e=r(d/f);c=d-e*f;h[b]=e|0}return[h,c|0]}function +i(h,w){var +o,j=f(w);if(F)return[new +d(h.value/j.value),new +d(h.value%j.value)];var +n=h.value,i=j.value,g;if(i===0)throw new +Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new +c(r(n/i)),new +c(n%i)];return[e[0],h]}if(j.isSmall){if(i===1)return[h,e[0]];if(i==-1)return[h.negate(),e[0]];var +s=Math.abs(i);if(sd.length?1:-1;for(var +b=c.length-1;b>=0;b--)if(c[b]!==d[b])return c[b]>d[b]?1:-1;return 0}b.prototype.compareAbs=function(e){var +b=f(e),c=this.value,d=b.value;if(b.isSmall)return 1;return m(c,d)};c.prototype.compareAbs=function(e){var +d=f(e),c=Math.abs(this.value),b=d.value;if(d.isSmall){b=Math.abs(b);return c===b?0:c>b?1:-1}return-1};d.prototype.compareAbs=function(d){var +b=this.value,c=f(d).value;b=b>=0?b:-b;c=c>=0?c:-c;return b===c?0:b>c?1:-1};b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var +b=f(c),d=this.value,e=b.value;if(this.sign!==b.sign)return b.sign?1:-1;if(b.isSmall)return this.sign?-1:1;return m(d,e)*(this.sign?-1:1)};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(d){if(d===Infinity)return-1;if(d===-Infinity)return 1;var +c=f(d),b=this.value,e=c.value;if(c.isSmall)return b==e?0:b>e?1:-1;if(b<0!==c.sign)return b<0?-1:1;return b<0?1:-1};c.prototype.compareTo=c.prototype.compare;d.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var +c=this.value,d=f(b).value;return c===d?0:c>d?1:-1};d.prototype.compareTo=d.prototype.compare;b.prototype.equals=function(b){return this.compare(b)===0};d.prototype.eq=d.prototype.equals=c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals;b.prototype.notEquals=function(b){return this.compare(b)!==0};d.prototype.neq=d.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals;b.prototype.greater=function(b){return this.compare(b)>0};d.prototype.gt=d.prototype.greater=c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater;b.prototype.lesser=function(b){return this.compare(b)<0};d.prototype.lt=d.prototype.lesser=c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser;b.prototype.greaterOrEquals=function(b){return this.compare(b)>=0};d.prototype.geq=d.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals;b.prototype.lesserOrEquals=function(b){return this.compare(b)<=0};d.prototype.leq=d.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals;b.prototype.isEven=function(){return(this.value[0]&1)===0};c.prototype.isEven=function(){return(this.value&1)===0};d.prototype.isEven=function(){return(this.value&g(1))===g(0)};b.prototype.isOdd=function(){return(this.value[0]&1)===1};c.prototype.isOdd=function(){return(this.value&1)===1};d.prototype.isOdd=function(){return(this.value&g(1))===g(1)};b.prototype.isPositive=function(){return!this.sign};c.prototype.isPositive=function(){return this.value>0};d.prototype.isPositive=c.prototype.isPositive;b.prototype.isNegative=function(){return this.sign};c.prototype.isNegative=function(){return this.value<0};d.prototype.isNegative=c.prototype.isNegative;b.prototype.isUnit=function(){return false};c.prototype.isUnit=function(){return Math.abs(this.value)===1};d.prototype.isUnit=function(){return this.abs().value===g(1)};b.prototype.isZero=function(){return false};c.prototype.isZero=function(){return this.value===0};d.prototype.isZero=function(){return this.value===g(0)};b.prototype.isDivisibleBy=function(c){var +b=f(c);if(b.isZero())return false;if(b.isUnit())return true;if(b.compareAbs(2)===0)return this.isEven();return this.mod(b).isZero()};d.prototype.isDivisibleBy=c.prototype.isDivisibleBy=b.prototype.isDivisibleBy;function +R(c){var +b=c.abs();if(b.isUnit())return false;if(b.equals(2)||b.equals(3)||b.equals(5))return true;if(b.isEven()||b.isDivisibleBy(3)||b.isDivisibleBy(5))return false;if(b.lesser(49))return true}function +J(e,f){var +g=e.prev(),d=g,h=0,a,i,c,b;while(d.isEven())d=d.divide(2),h++;next:for(c=0;c-s)return new +c(d-1);return new +b(H,true)};d.prototype.prev=function(){return new +d(this.value-g(1))};var +h=[1];while(2*h[h.length-1]<=a)h.push(2*h[h.length-1]);var +v=h.length,j=h[v-1];function +X(b){return Math.abs(b)<=a}b.prototype.shiftLeft=function(d){var +b=f(d).toJSNumber();if(!X(b))throw new +Error(String(b)+wg);if(b<0)return this.shiftRight(-b);var +c=this;if(c.isZero())return c;while(b>=v){c=c.multiply(j);b-=v-1}return c.multiply(h[b])};d.prototype.shiftLeft=c.prototype.shiftLeft=b.prototype.shiftLeft;b.prototype.shiftRight=function(e){var +b,c=f(e).toJSNumber();if(!X(c))throw new +Error(String(c)+wg);if(c<0)return this.shiftLeft(-c);var +d=this;while(c>=v){if(d.isZero()||d.isNegative()&&d.isUnit())return d;b=i(d,j);d=b[1].isNegative()?b[0].prev():b[0];c-=v-1}b=i(d,h[c]);return b[1].isNegative()?b[0].prev():b[0]};d.prototype.shiftRight=c.prototype.shiftRight=b.prototype.shiftRight;function +I(h,b,q){b=f(b);var +m=h.isNegative(),p=b.isNegative(),l=m?h.not():h,o=p?b.not():b,c=0,d=0,k=null,n=null,a=[];while(!l.isZero()||!o.isZero()){k=i(l,j);c=k[1].toJSNumber();if(m)c=j-1-c;n=i(o,j);d=n[1].toJSNumber();if(p)d=j-1-d;l=k[0];o=n[0];a.push(q(c,d))}var +g=q(m?1:0,p?1:0)!==0?ar(-1):ar(0);for(var +e=a.length-1;e>=0;e-=1)g=g.multiply(j).add(ar(a[e]));return g}b.prototype.not=function(){return this.negate().prev()};d.prototype.not=c.prototype.not=b.prototype.not;b.prototype.and=function(b){return I(this,b,function(b,c){return b&c})};d.prototype.and=c.prototype.and=b.prototype.and;b.prototype.or=function(b){return I(this,b,function(b,c){return b|c})};d.prototype.or=c.prototype.or=b.prototype.or;b.prototype.xor=function(b){return I(this,b,function(b,c){return b^c})};d.prototype.xor=c.prototype.xor=b.prototype.xor;var +G=1<<30,_=(a&-a)*(a&-a)|G;function +D(d){var +b=d.value,c=typeof +b==="number"?b|G:typeof +b==="bigint"?b|g(G):b[0]+b[1]*a|_;return c&-c}function +Q(c,b){if(b.compareTo(c)<=0){var +a=Q(c,b.square(b)),e=a.p,d=a.e,f=e.multiply(b);return f.compareTo(c)<=0?{p:f,e:d*2+1}:{p:e,e:d*2}}return{p:ar(1),e:0}}b.prototype.bitLength=function(){var +b=this;if(b.compareTo(ar(0))<0)b=b.negate().subtract(ar(1));if(b.compareTo(ar(0))===0)return ar(0);return ar(Q(b,ar(2)).e).add(ar(1))};d.prototype.bitLength=c.prototype.bitLength=b.prototype.bitLength;function +S(b,c){b=f(b);c=f(c);return b.greater(c)?b:c}function +K(b,c){b=f(b);c=f(c);return b.lesser(c)?b:c}function +P(b,c){b=f(b).abs();c=f(c).abs();if(b.equals(c))return b;if(b.isZero())return c;if(c.isZero())return b;var +d=e[1],a,g;while(b.isEven()&&c.isEven()){a=K(D(b),D(c));b=b.divide(a);c=c.divide(a);d=d.multiply(a)}while(b.isEven())b=b.divide(D(b));do{while(c.isEven())c=c.divide(D(c));if(b.greater(c)){g=c;c=b;b=g}c=c.subtract(b)}while(!c.isZero());return d.isUnit()?b:b.multiply(d)}function +ac(b,c){b=f(b).abs();c=f(c).abs();return b.divide(P(b,c)).multiply(c)}function +ag(b,c){b=f(b);c=f(c);var +g=K(b,c),n=S(b,c),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var +j=x(h,a).value,l=[],k=true;for(var +d=0;d=i){if(d===z&&i===1)continue;throw new +Error(d+" is not a valid digit in base "+g+ep)}}g=f(g);var +h=[],j=c[0]===cE;for(b=j?1:0;b=0;b--){c=c.add(f[b].times(d));d=d.times(a)}return g?c.negate():c}function +ah(c,b){b=b||M;if(c=0){f=d.divmod(c);d=f.quotient;var +e=f.remainder;if(e.isNegative()){e=c.minus(e).abs();d=d.next()}g.push(e.toJSNumber())}g.push(d.toJSNumber());return{value:g.reverse(),isNegative:a}}function +Z(e,d,c){var +b=x(e,d);return(b.isNegative?cE:ae)+b.value.map(function(b){return ah(b,c)}).join(ae)}b.prototype.toArray=function(b){return x(this,b)};c.prototype.toArray=function(b){return x(this,b)};d.prototype.toArray=function(b){return x(this,b)};b.prototype.toString=function(b,a){if(b===y)b=10;if(b!==10)return Z(this,b,a);var +e=this.value,d=e.length,f=String(e[--d]),h="0000000",c;while(--d>=0){c=String(e[d]);f+=h.slice(c.length)+c}var +g=this.sign?cE:ae;return g+f};c.prototype.toString=function(b,c){if(b===y)b=10;if(b!=10)return Z(this,b,c);return String(this.value)};d.prototype.toString=c.prototype.toString;d.prototype.toJSON=b.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()};b.prototype.valueOf=function(){return parseInt(this.toString(),10)};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=function(){return this.value};c.prototype.toJSNumber=c.prototype.valueOf;d.prototype.valueOf=d.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function +V(e){if(n(+e)){var +l=+e;if(l===r(l))return F?new +d(g(l)):new +c(l);throw new +Error(oC+e)}var +s=e[0]===cE;if(s)e=e.slice(1);var +h=e.split(/e/i);if(h.length>2)throw new +Error(oC+h.join(oZ));if(h.length===2){var +f=h[1];if(f[0]===fd)f=f.slice(1);f=+f;if(f!==r(f)||!n(f))throw new +Error(oC+f+" is not a valid exponent.");var +a=h[0],i=a.indexOf(ep);if(i>=0){f-=a.length-i-1;a=a.slice(0,i)+a.slice(i+1)}if(f<0)throw new +Error("Cannot include negative exponent part for integers");a+=new +Array(f+1).join(o);e=a}var +t=/^([0-9][0-9]*)$/.test(e);if(!t)throw new +Error(oC+e);if(F)return new +d(g(s?cE+e:e));var +p=[],j=e.length,m=$,k=j-m;while(j>0){p.push(+e.slice(k,j));k-=m;if(k<0)k=0;j-=m}q(p);return new +b(p,s)}function +af(b){if(F)return new +d(g(b));if(n(b)){if(b!==r(b))throw new +Error(b+" is not an integer.");return new +c(b)}return V(b.toString())}function +f(b){if(typeof +b==="number")return af(b);if(typeof +b==="string")return V(b);if(typeof +b==="bigint")return new +d(b);return b}for(var +k=0;k0)e[-k]=f(-k)}e.one=e[1];e.zero=e[0];e.minusOne=e[-1];e.max=S;e.min=K;e.gcd=P;e.lcm=ac;e.isInstance=function(e){return e +instanceof +b||e +instanceof +c||e +instanceof +d};e.randBetween=ag;e.fromArray=function(c,b,d){return U(c.map(f),f(b||10),d)};return e}();function +cH(b){var +c=b.toJSNumber()|0;if(b.equals(ar(c)))return c;return b}function +GK(b){return cH(ar(b).abs())}function +GL(b,c){return cH(ar(b).add(ar(c)))}function +ef(b,c){return ar(b).compare(ar(c))}function +jy(c,b){b=ar(b);if(b.equals(ar(0)))k$();return cH(ar(c).divide(ar(b)))}function +by_(c,b){b=ar(b);if(b.equals(ar(0)))k$();return cH(ar(c).mod(b))}function +sN(b,c){return[0,jy(b,c),by_(b,c)]}function +GM(b,c){return jy(b,c)}function +byY(b,c){return ar(b).equals(ar(c))?1:0}function +c_(b){return ar(b).compare(ar.zero)}function +sP(b,c){return cH(ar(b).subtract(ar(c)))}function +byZ(b,c){var +d=c_(b),e=c_(c);if(d*e<0)if(!ar(b).mod(ar(c)).equals(ar(0)))return sP(jy(b,c),ar(1));return jy(b,c)}function +by1(b,c){return cH(ar.gcd(ar(b),ar(c)).abs())}function +byR(d,f,g){f=ar(f);var +b=f.toArray(Math.pow(2,32));d.write(8,b.isNegative?1:0);var +a=b.value.length,e=a*4;d.write(32,e);for(var +c=a-1;c>=0;c--){d.write(8,b.value[c]>>>0&dw);d.write(8,b.value[c]>>>8&dw);d.write(8,b.value[c]>>>16&dw);d.write(8,b.value[c]>>>24&dw)}g[0]=4*(1+((e+3)/4|0));g[1]=8*(1+((e+7)/8|0))}function +byS(c,g){var +f;switch(c.read8u()){case +1:f=true;break;case +0:f=false;break;default:dp("input_value: z (malformed input)")}var +a=c.read32u(),d=ar(0);for(var +e=0;e>>0);d=b.shiftLeft(e*32).add(d)}if(f)d=d.negate();g[0]=a+4;return cH(d)}function +by2(e){var +c=ar(e).toArray(Math.pow(2,32)),b=0;for(var +d=0;d=48&&b<=57)return b-48;if(b>=97&&b<=CB)return b-97+10;if(b>=65&&b<=70)return b-65+10}var +e=0;if(b[e]==fd)b=b.substring(1);else +if(b[e]==cE)e++;if(b[e]==sa)bP(zY);b=b.replace(/_/g,ae);if(b==cE||b==ae)b=o;for(;e=d)bP(zY)}return cH(ar(b,d))}function +gT(e,b,c,d){b=eX(b);if(c!=0||d!=b.length){if(b.length-c=0?1:0}function +po(b){b=ar(b);if(!by0(b))k_(ee(mk));var +c=ar(0xffffffff),e=b.and(c).toJSNumber(),d=b.shiftRight(32).and(c).toJSNumber(),f=Gu(e,d);return f}function +byA(b){switch(b[2]){case-8:case-11:case-12:return 1;default:return 0}}function +byi(c){var +b=ae;if(c[0]==0){b+=c[1][1];if(c.length==3&&c[2][0]==0&&byA(c[1]))var +f=c[2],a=1;else +var +a=2,f=c;b+="(";for(var +e=a;ea)b+=gC;var +d=f[e];if(typeof +d=="number")b+=d.toString();else +if(d +instanceof +eV)b+=mw+d.toString()+mw;else +if(typeof +d=="string")b+=mw+d.toString()+mw;else +b+=sa}b+=")"}else +if(c[0]==bn)b+=c[1];return b}function +Gp(b){if(b +instanceof +Array&&(b[0]==0||b[0]==bn)){var +d=ee(D7);if(d)d(b,false);else{var +e=byi(b),c=ee(uZ);if(c)c(0);console.error(sd+e+"\n")}}else +throw b}function +byL(){var +b=bz.process;if(b&&b.on)b.on("uncaughtException",function(c,d){Gp(c);b.exit(2)});else +if(bz.addEventListener)bz.addEventListener("error",function(b){if(b.error)Gp(b.error)})}byL();function +r(b,c){return b.length==1?b(c):dF(b,[c])}function +aE(b,c,d){return b.length==2?b(c,d):dF(b,[c,d])}function +cA(b,c,d,e){return b.length==3?b(c,d,e):dF(b,[c,d,e])}function +uU(b,c,d,e,f){return b.length==4?b(c,d,e,f):dF(b,[c,d,e,f])}function +lR(b,c,d,e,f,a){return b.length==5?b(c,d,e,f,a):dF(b,[c,d,e,f,a])}function +bx_(b,c,d,e,f,a,g){return b.length==6?b(c,d,e,f,a,g):dF(b,[c,d,e,f,a,g])}function +bx9(b,c,d,e,f,a,g,h){return b.length==7?b(c,d,e,f,a,g,h):dF(b,[c,d,e,f,a,g,h])}byk();var +pq=[bn,b(Ds),-1],sV=[bn,b(D9),-2],lb=[bn,b(q4),-3],sR=[bn,b(zi),-4],pr=[bn,b(wP),-6],dr=[bn,b(E9),-7],sT=[bn,b(vL),-8],sU=[bn,b(zL),-9],bo=[bn,b(FG),-11],sW=[bn,b(DR),DG],bx6=[4,0,0,0,[12,45,[4,0,0,0,0]]],pD=[0,[11,b('File "'),[2,0,[11,b('", line '),[4,0,0,0,[11,b(yU),[4,0,0,0,[12,45,[4,0,0,0,[11,b(": "),[2,0,0]]]]]]]]]],b('File "%s", line %d, characters %d-%d: %s')],bx7=[12,41,0],bx8=[4,0,0,0,[12,46,0]],uT=[0,b("eventsManager"),b("computeAllocationsFamiliales"),b("computeAidesAuLogement")];d2(11,sW,DR);d2(10,bo,FG);d2(9,[bn,b(B3),-10],B3);d2(8,sU,zL);d2(7,sT,vL);d2(6,dr,E9);d2(5,pr,wP);d2(4,[bn,b(yr),-5],yr);d2(3,sR,zi);d2(2,lb,q4);d2(1,sV,D9);d2(0,pq,Ds);var +G3=b("output_substring"),G0=b("%.12g"),GZ=b(ep),GX=b(wh),GY=b(zz),GQ=b("Stdlib.Exit"),GS=ga(0,0,E4),GT=ga(0,0,65520),GU=ga(1,0,E4),G6=b(wA),G7=b("\\'"),G8=b(vT),G9=b(An),G_=b(Bj),G$=b(yx),G5=b("Char.chr"),Hc=b("nth"),Hd=b("List.nth"),Hb=b("tl"),Ha=b("hd"),Hg=b("String.blit / Bytes.blit_string"),Hf=b("Bytes.blit"),He=b("String.sub / Bytes.sub"),Hl=b("String.contains_from / Bytes.contains_from"),Hi=b(ae),Hh=b("String.concat"),Hn=b("Array.blit"),Hs=b("Map.remove_min_elt"),Ht=[0,0,0,0],Hu=[0,b("map.ml"),xp,10],Hv=[0,0,0],Ho=b(mn),Hp=b(mn),Hq=b(mn),Hr=b(mn),Hw=b("Stdlib.Queue.Empty"),HC=b("Buffer.add_substring/add_subbytes"),HB=b("Buffer.add: cannot grow buffer"),HA=[0,b(zX),93,2],Hz=[0,b(zX),94,2],Hy=b("Buffer.sub"),HL=b("%c"),HM=b("%s"),HN=b(xR),HO=b(BD),HP=b(zf),HQ=b(D2),HR=b("%f"),HS=b("%B"),HT=b("%{"),HU=b("%}"),HV=b("%("),HW=b("%)"),HX=b(q0),HY=b("%t"),HZ=b("%?"),H0=b("%r"),H1=b("%_r"),H2=[0,b(cf),850,23],Ib=[0,b(cf),gq,21],H5=[0,b(cf),815,21],Ic=[0,b(cf),ms,21],H6=[0,b(cf),819,21],Id=[0,b(cf),rx,19],H7=[0,b(cf),gF,19],Ie=[0,b(cf),826,22],H8=[0,b(cf),gy,22],If=[0,b(cf),ro,30],H9=[0,b(cf),rh,30],H$=[0,b(cf),836,26],H3=[0,b(cf),837,26],Ia=[0,b(cf),846,28],H4=[0,b(cf),847,28],H_=[0,b(cf),851,23],Ji=b(v7),Jg=[0,b(cf),1558,4],Jh=b("Printf: bad conversion %["),Jj=[0,b(cf),Dd,39],Jk=[0,b(cf),1649,31],Jl=[0,b(cf),1650,31],Jm=b("Printf: bad conversion %_"),Jn=b(v3),Jo=b(wf),Jp=b(v3),Jq=b(wf),Ju=[0,[11,b("invalid box description "),[3,0,0]],b("invalid box description %S")],Js=b(ae),Jt=[0,0,4],Jv=b(ae),Jw=b(xu),Jx=b("h"),Jy=b("hov"),Jz=b("hv"),JA=b("v"),Je=b(q6),Jc=b("neg_infinity"),Jd=b(FU),Jb=b(ep),I8=[0,cG],IW=b("%+nd"),IX=b("% nd"),IZ=b("%+ni"),I0=b("% ni"),I1=b("%nx"),I2=b("%#nx"),I3=b("%nX"),I4=b("%#nX"),I5=b("%no"),I6=b("%#no"),IV=b("%nd"),IY=b(zf),I7=b("%nu"),IJ=b("%+ld"),IK=b("% ld"),IM=b("%+li"),IN=b("% li"),IO=b("%lx"),IP=b("%#lx"),IQ=b("%lX"),IR=b("%#lX"),IS=b("%lo"),IT=b("%#lo"),II=b("%ld"),IL=b(BD),IU=b("%lu"),Iw=b("%+Ld"),Ix=b("% Ld"),Iz=b("%+Li"),IA=b("% Li"),IB=b("%Lx"),IC=b("%#Lx"),ID=b("%LX"),IE=b("%#LX"),IF=b("%Lo"),IG=b("%#Lo"),Iv=b("%Ld"),Iy=b(D2),IH=b("%Lu"),Ij=b("%+d"),Ik=b("% d"),Im=b("%+i"),In=b("% i"),Io=b("%x"),Ip=b("%#x"),Iq=b("%X"),Ir=b("%#X"),Is=b("%o"),It=b("%#o"),Ii=b(sg),Il=b(xR),Iu=b(v7),HD=b("@]"),HE=b("@}"),HF=b("@?"),HG=b("@\n"),HH=b("@."),HI=b("@@"),HJ=b("@%"),HK=b("@"),Ig=b("CamlinternalFormat.Type_mismatch"),JE=b(ae),JF=[0,[11,b(gC),[2,0,[2,0,0]]],b(", %s%s")],J4=[0,[11,b(sd),[2,0,[12,10,0]]],b(FA)],J5=[0,[11,b("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],b("Fatal error in uncaught exception handler: exception %s\n")],J3=b("Fatal error: out of memory in uncaught exception handler"),J1=[0,[11,b(sd),[2,0,[12,10,0]]],b(FA)],JX=[0,[2,0,[12,10,0]],b("%s\n")],JP=b("Raised at"),JQ=b("Re-raised at"),JR=b("Raised by primitive operation at"),JS=b("Called from"),JT=b(" (inlined)"),JV=b(ae),JU=[0,[2,0,[12,32,[2,0,[11,b(' in file "'),[2,0,[12,34,[2,0,[11,b(", line "),[4,0,0,0,[11,b(yU),bx6]]]]]]]]]],b('%s %s in file "%s"%s, line %d, characters %d-%d')],JW=[0,[2,0,[11,b(" unknown location"),0]],b("%s unknown location")],JK=b("Out of memory"),JL=b("Stack overflow"),JM=b("Pattern matching failed"),JN=b("Assertion failed"),JO=b("Undefined recursive module"),JG=[0,[12,40,[2,0,[2,0,[12,41,0]]]],b("(%s%s)")],JH=b(ae),JI=b(ae),JJ=[0,[12,40,[2,0,[12,41,0]]],b("(%s)")],JD=[0,[4,0,0,0,0],b(sg)],JB=[0,[3,0,0],b("%S")],JC=b(sa),JY=[0,b(ae),b("(Cannot print locations:\n bytecode executable program file not found)"),b("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),b("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),b("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],bx4=b("OCAMLRUNPARAM"),bx2=b("CAMLRUNPARAM"),J6=b(ae),Kt=[3,0,3],Ku=b(ep),Ko=b(nq),Kp=b("<\/"),Kq=b(ae),Kk=b(nq),Kl=b(rT),Km=b(ae),Ki=b("\n"),Ke=b(ae),Kf=b(ae),Kg=b(ae),Kh=b(ae),Kd=[0,b(ae)],J$=b(ae),Ka=b(ae),Kb=b(ae),Kc=b(ae),J9=[0,b(ae),0,b(ae)],J8=b(ae),J7=b("Stdlib.Format.String_tag"),KF=b(ae),KM=[0,b("lib/dates.ml"),226,2],KL=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],b("%04d-%02d-%02d")],KJ=[0,[12,91,[4,0,0,0,[11,b(" years, "),[4,0,0,0,[11,b(" months, "),[4,0,0,0,[11,b(" days]"),0]]]]]]],b("[%d years, %d months, %d days]")],KG=b("Dates_calc.Dates.InvalidDate"),KH=b("Dates_calc.Dates.AmbiguousComputation"),KR=ga(1,0,0),KN=b("Z.Overflow"),KO=b(mk),KV=b(ae),KW=b("+inf"),KX=b("-inf"),KY=b(F1),KZ=b("undef"),K1=[0,b("q.ml"),486,25],K0=b("Q.of_string: invalid digit"),KT=b(w$),KS=b(w$),Ly=[0,b(rU),72,32],Lv=[0,b(rU),72,32],Lu=b(ae),Lq=b("NaN value not allowed in standard JSON"),Lr=[0,[8,[0,0,3],0,[0,16],0],b(xU)],Lt=[0,[8,[0,0,3],0,[0,17],0],b(Dj)],Ls=b(yR),Lo=b("Infinity value not allowed in standard JSON"),Lp=b("-Infinity value not allowed in standard JSON"),Lk=b("NaN"),Ll=[0,[8,[0,0,3],0,[0,16],0],b(xU)],Ln=[0,[8,[0,0,3],0,[0,17],0],b(Dj)],Lm=b(yR),Li=b("Infinity"),Lj=b("-Infinity"),Lg=b(wh),Lh=b(zz),Lf=b("null"),K$=b(vT),La=b(An),Lb=b(Bj),Lc=b("\\f"),Ld=b(yx),Le=b('\\"'),K_=b(wA),K9=[0,[11,b("src="),[3,0,[11,b(" start="),[4,3,0,0,[11,b(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],b("src=%S start=%i len=%i\n%!")],K7=b("\\u00"),K4=[0,b(rU),72,32],K2=b("Yojson.Json_error"),K6=[0,b(qM),b(q3),b(re),b(rN),b(rp),b(ae),b(ae),b(ae),b(ae),b(ae),b(ae)],Lx=[0,b(qM),b(q3),b(re),b(rN),b(rp),b(ae),b(ae),b(ae),b(ae),b(ae),b(ae)],LA=[0,b(qM),b(q3),b(re),b(rN),b(rp),b(ae),b(ae),b(ae),b(ae),b(ae),b(ae)],Mq=[0,0,0],Mu=b("unreachable due to the [is_subscope_call] test"),Mw=b("unreachable due to the [is_subscope_input_var_def] test"),Mx=b("]"),My=b("["),Mz=b(" ]): expected variable definition (function output), found: "),MA=b(gC),MB=b(va),MC=b(" ]): expected variable definition (function output), found: end of tokens"),MD=b(gC),ME=b(va),Mv=b("Unexpected event: "),MF=[0,b("runtimes/ocaml/runtime.ml"),nA,19],MG=b("Missing function output variable definition."),MH=b("Invalid start of function call."),Mt=b(fc),Ms=b(ac),MI=[0,[11,b("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],b("An error occurred while parsing raw events: %s\n")],Mh=b(ye),Mi=b(gC),Mj=[0,[11,b(A3),0],b(A3)],Mk=b(ye),Ml=b(gC),Mm=[0,[11,b(EW),0],b(EW)],Mn=b(gC),Mo=[0,[11,b("VariableDefinition([ "),[2,0,[11,b(" ], "),[2,0,[12,41,0]]]]],b("VariableDefinition([ %s ], %s)")],Mp=[0,[11,b("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,bx7]]]]]]]]]],b("DecisionTaken(%s:%d.%d-%d.%d)")],L3=[0,cB,b("VarComputation")],L4=[0,cB,b("FunCall")],L5=b(Cx),L6=b("inputs"),L7=b(yh),L8=[0,cB,b("SubScopeCall")],L9=b("fun_calls"),L_=b("value"),L$=b(yh),Ma=b("pos"),Mb=b(ac),Mc=b(Cx),Md=b("fun_inputs"),Me=b("fun_name"),LS=[0,cd,[0,[0,cB,b("Unit")],0]],LT=[0,cd,[0,[0,cB,b("Unembeddable")],0]],LU=[0,cB,b("Bool")],LV=[0,cB,b("Money")],LW=[0,cB,b("Integer")],LX=[0,cB,b("Decimal")],LY=[0,cB,b("Date")],LZ=[0,cB,b("Duration")],L0=[0,cB,b("Enum")],L1=[0,cB,b("Struct")],L2=[0,cB,b("Array")],LR=[0,[15,0],b(q0)],LQ=[0,[15,0],b(q0)],LC=b("law_headings"),LD=b("end_column"),LE=b("end_line"),LF=b("start_column"),LG=b("start_line"),LH=b("filename"),LI=b("Runtime_ocaml.Runtime.EmptyError"),LJ=b("Runtime_ocaml.Runtime.AssertionFailed"),LK=b("Runtime_ocaml.Runtime.ConflictError"),LL=b("Runtime_ocaml.Runtime.UncomparableDurations"),LN=b("Runtime_ocaml.Runtime.ImpossibleDate"),LP=b("Runtime_ocaml.Runtime.NoValueProvided"),MJ=b("Jsoo_runtime.Error.Exn"),MK=b(rB),M2=[0,[2,0,[11,b(" in file "),[2,0,[11,b(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,b("--"),[4,0,0,0,[12,58,bx8]]]]]]]]]],b("%s in file %s, position %d:%d--%d:%d.")],M3=b("No rule applies in the given context to give a value to the variable"),M4=b("A conflict happened between two rules giving a value to the variable"),M5=b("A failure happened in the assertion"),MV=b("Begin call"),MW=b("End call"),MX=b("Variable definition"),MY=b("Decision taken"),MT=b(ae),MR=b("date_of_jsoo: invalid date"),MP=[0,b(x2),b(BT),b(EJ)],MQ=[0,b(x2),b(EJ),b(BT)],$I=[0,b(aY),90,14,90,29,[0,b(bk),[0,b(aZ),0]]],$B=[0,b(aY),fI,18,fI,64,[0,b(bk),[0,b(aZ),0]]],$C=[0,b(aY),cj,5,cj,72,[0,b(bk),[0,b(aZ),0]]],$A=[0,b(aY),cj,5,cj,72,[0,b(bk),[0,b(aZ),0]]],$w=[0,b(aY),87,14,87,53,[0,b(bk),[0,b(aZ),0]]],$s=[0,b(aY),86,14,86,50,[0,b(bk),[0,b(aZ),0]]],$o=[0,b(aY),89,14,89,46,[0,b(bk),[0,b(aZ),0]]],$k=[0,b(aY),88,14,88,54,[0,b(bk),[0,b(aZ),0]]],$f=[0,b(aY),97,18,97,72,[0,b(bk),[0,b(aZ),0]]],$g=[0,b(aY),96,5,96,80,[0,b(bk),[0,b(aZ),0]]],$e=[0,b(aY),96,5,96,80,[0,b(bk),[0,b(aZ),0]]],_$=[0,b(aY),93,18,93,67,[0,b(bk),[0,b(aZ),0]]],$a=[0,b(aY),92,5,92,75,[0,b(bk),[0,b(aZ),0]]],__=[0,b(aY),92,5,92,75,[0,b(bk),[0,b(aZ),0]]],_6=[0,b(aY),fT,14,fT,30,[0,b("Article L131-1"),[0,b(bk),[0,b(aZ),0]]]],_3=[0,0],_4=[1,0],_5=[2,0],_7=[0,b(aY),76,11,76,27,[0,b(bk),[0,b(aZ),0]]],_2=[0,b(aY),76,11,76,27,[0,b(bk),[0,b(aZ),0]]],_8=[0,b(d_),[0,b("enfants_\xc3\xa0_charge"),0]],$b=[0,b(aY),92,5,92,75,[0,b(bk),[0,b(aZ),0]]],$c=[0,b(d_),[0,b("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],_9=[0,b(aY),92,5,92,75,[0,b(bk),[0,b(aZ),0]]],$h=[0,b(aY),96,5,96,80,[0,b(bk),[0,b(aZ),0]]],$i=[0,b(d_),[0,b("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$d=[0,b(aY),96,5,96,80,[0,b(bk),[0,b(aZ),0]]],$l=[0,b(aY),88,14,88,54,[0,b(bk),[0,b(aZ),0]]],$m=[0,b(d_),[0,b("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$j=[0,b(aY),88,14,88,54,[0,b(bk),[0,b(aZ),0]]],$p=[0,b(aY),89,14,89,46,[0,b(bk),[0,b(aZ),0]]],$q=[0,b(d_),[0,b("allocations_familiales.r\xc3\xa9sidence"),0]],$n=[0,b(aY),89,14,89,46,[0,b(bk),[0,b(aZ),0]]],$t=[0,b(aY),86,14,86,50,[0,b(bk),[0,b(aZ),0]]],$u=[0,b(d_),[0,b("allocations_familiales.date_courante"),0]],$r=[0,b(aY),86,14,86,50,[0,b(bk),[0,b(aZ),0]]],$x=[0,b(aY),87,14,87,53,[0,b(bk),[0,b(aZ),0]]],$y=[0,b(d_),[0,b("allocations_familiales.enfants_\xc3\xa0_charge"),0]],$v=[0,b(aY),87,14,87,53,[0,b(bk),[0,b(aZ),0]]],$D=[0,b(aY),cj,5,cj,72,[0,b(bk),[0,b(aZ),0]]],$E=[0,b(d_),[0,b("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],$z=[0,b(aY),cj,5,cj,72,[0,b(bk),[0,b(aZ),0]]],$F=[0,b(d_),[0,b(vw),[0,b(U),0]]],$G=[0,b(d_),[0,b(vw),[0,b(U),0]]],$J=[0,b(aY),80,12,80,27,[0,b(bk),[0,b(aZ),0]]],$H=[0,b(aY),80,12,80,27,[0,b(bk),[0,b(aZ),0]]],$K=[0,b(d_),[0,b("i_montant_vers\xc3\xa9"),0]],_W=[0,b(aY),45,14,45,27,[0,b(eI),[0,b(aZ),0]]],_V=b(o),_R=[0,b(br),DI,14,DI,62,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],_M=[0,b(U),[0,b(kW),[0,b(ai),0]]],_N=[0,b(U),[0,b(kW),0]],_O=[0,b(U),[0,b(kW),[0,b(ac),0]]],_P=[0,b(U),[0,b(kW),0]],_Q=b(o),_I=[0,b(br),oh,14,oh,61,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],_E=[0,b(aY),39,14,39,38,[0,b(eI),[0,b(aZ),0]]],_y=[0,b(U),[0,b(j8),[0,b(ai),0]]],_z=[0,b(U),[0,b(j8),0]],_A=[0,b(U),[0,b(j8),[0,b(ac),0]]],_B=[0,b(U),[0,b(j8),0]],_C=b(o),_D=b(o),_u=[0,b(aY),37,14,37,32,[0,b(eI),[0,b(aZ),0]]],_t=b(o),_p=[0,b(dQ),h0,5,h0,43,[0,b("Article R521-4"),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],_e=[0,b(U),[0,b(fi),[0,b(ai),0]]],_f=[0,b(U),[0,b(fi),0]],_g=[0,b(U),[0,b(fi),[0,b(ac),0]]],_h=[0,b(U),[0,b(fi),0]],_i=b(en),_n=b(kb),_o=b(b0),_j=[0,b(U),[0,b(j2),[0,b(ai),0]]],_k=[0,b(U),[0,b(j2),0]],_l=[0,b(U),[0,b(j2),[0,b(ac),0]]],_m=[0,b(U),[0,b(j2),0]],_q=[0,b(I),i1,11,i1,49,[0,b(J),[0,b(H),[0,b(B),0]]]],_d=[0,b(I),i1,11,i1,49,[0,b(J),[0,b(H),[0,b(B),0]]]],_a=[0,b(dQ),fe,14,fe,46,[0,b(oS),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],Z5=b(cF),Z6=[0,b(br),268,5,qO,41,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Z2=b(cF),Z3=b(en),Z4=b(cF),Z7=[0,b(I),dg,11,dg,52,[0,b(J),[0,b(H),[0,b(B),0]]]],ZZ=b(cF),Z0=[0,b(br),Aq,5,280,40,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],ZW=b(cF),ZX=b(en),ZY=b(cF),Z1=[0,b(I),dg,11,dg,52,[0,b(J),[0,b(H),[0,b(B),0]]]],Z8=[0,b(I),dg,11,dg,52,[0,b(J),[0,b(H),[0,b(B),0]]]],ZV=[0,b(br),hT,14,hT,55,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],ZU=b(o),ZJ=b(z),ZK=[0,b(U),[0,b(bG),[0,b(ai),0]]],ZL=[0,b(U),[0,b(bG),0]],ZM=[0,b(U),[0,b(bG),[0,b(ac),0]]],ZN=[0,b(U),[0,b(bG),0]],ZO=[0,b(br),gI,5,383,55,[0,b(kn),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(a7),[0,b(ad),0]]]]]]],ZI=b("0.0369"),ZP=[0,b(I),eN,11,eN,37,[0,b(J),[0,b(H),[0,b(B),0]]]],ZB=b(z),ZC=[0,b(U),[0,b(bG),[0,b(ai),0]]],ZD=[0,b(U),[0,b(bG),0]],ZE=[0,b(U),[0,b(bG),[0,b(ac),0]]],ZF=[0,b(U),[0,b(bG),0]],ZG=[0,b(br),389,5,392,56,[0,b(kn),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(a7),[0,b(ad),0]]]]]]],ZA=b("0.0567"),ZH=[0,b(I),eN,11,eN,37,[0,b(J),[0,b(H),[0,b(B),0]]]],ZQ=[0,b(I),eN,11,eN,37,[0,b(J),[0,b(H),[0,b(B),0]]]],Zz=[0,b(br),22,14,22,40,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Zv=[0,b(U),[0,b(j9),[0,b(ai),0]]],Zw=[0,b(U),[0,b(j9),0]],Zx=[0,b(U),[0,b(j9),[0,b(ac),0]]],Zy=[0,b(U),[0,b(j9),0]],ZR=[0,b(I),eN,11,eN,37,[0,b(J),[0,b(H),[0,b(B),0]]]],Zu=[0,b(I),eN,11,eN,37,[0,b(J),[0,b(H),[0,b(B),0]]]],Zo=b(z),Zp=[0,b(br),356,5,yM,69,[0,b(kn),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(a7),[0,b(ad),0]]]]]]],Zq=[0,b(I),dP,11,dP,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Zl=[8,0],Zm=[0,b(aV),hc,24,hc,44,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],Zn=[0,b(I),dP,11,dP,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Zr=[0,b(I),dP,11,dP,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Zk=[0,b(br),18,14,18,34,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Zg=[0,b(br),x1,14,x1,39,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Zc=[0,b(U),[0,b(ke),[0,b(ai),0]]],Zd=[0,b(U),[0,b(ke),0]],Ze=[0,b(U),[0,b(ke),[0,b(ac),0]]],Zf=[0,b(U),[0,b(ke),0]],Y5=[0,b(U),[0,b(bG),[0,b(ai),0]]],Y6=[0,b(U),[0,b(bG),0]],Y7=[0,b(U),[0,b(bG),[0,b(ac),0]]],Y8=[0,b(U),[0,b(bG),0]],Y9=[0,b(br),60,5,60,38,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Y4=b(rv),Y_=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YY=[0,b(U),[0,b(bG),[0,b(ai),0]]],YZ=[0,b(U),[0,b(bG),0]],Y0=[0,b(U),[0,b(bG),[0,b(ac),0]]],Y1=[0,b(U),[0,b(bG),0]],Y2=[0,b(br),fI,5,fI,38,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],YX=b(Cd),Y3=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YR=[0,b(U),[0,b(bG),[0,b(ai),0]]],YS=[0,b(U),[0,b(bG),0]],YT=[0,b(U),[0,b(bG),[0,b(ac),0]]],YU=[0,b(U),[0,b(bG),0]],YV=[0,b(br),i5,5,i5,38,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],YQ=b(Cr),YW=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YK=[0,b(U),[0,b(bG),[0,b(ai),0]]],YL=[0,b(U),[0,b(bG),0]],YM=[0,b(U),[0,b(bG),[0,b(ac),0]]],YN=[0,b(U),[0,b(bG),0]],YO=[0,b(aY),28,5,28,44,[0,b(eI),[0,b(aZ),0]]],YJ=b(o),YP=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Y$=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YI=[0,b(I),cr,11,cr,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YF=[0,b(dQ),cr,14,cr,41,[0,b(oS),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],YD=b(b0),YE=b(b0),Yv=[8,0],Yw=[0,b(aV),FD,5,FD,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Ys=b(z),Yt=b(v1),Yu=b(o),Yx=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Yp=[8,0],Yq=[0,b(aV),F6,5,F6,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Ym=b(z),Yn=b("0.2379"),Yo=b(o),Yr=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Yj=[8,0],Yk=[0,b(aV),c0,5,c0,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Yg=b(z),Yh=b("0.2437"),Yi=b(o),Yl=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Yd=[8,0],Ye=[0,b(aV),zQ,5,zQ,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Ya=b(z),Yb=b("0.2496"),Yc=b(o),Yf=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],X9=[8,0],X_=[0,b(aV),od,5,od,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],X6=b(z),X7=b("0.2555"),X8=b(o),X$=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],X3=[8,0],X4=[0,b(aV),u6,5,u6,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],X0=b(z),X1=b("0.2613"),X2=b(o),X5=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],XX=[8,0],XY=[0,b(aV),wZ,5,wZ,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],XU=b(z),XV=b("0.2672"),XW=b(o),XZ=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],XR=[8,0],XS=[0,b(aV),qR,5,qR,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],XO=b(z),XP=b("0.2804"),XQ=b(o),XT=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],XL=[8,0],XM=[0,b(aV),fY,5,fY,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],XI=b(z),XJ=b("0.2936"),XK=b(o),XN=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],XF=[8,0],XG=[0,b(aV),fK,5,fK,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],XC=b(z),XD=b("0.3068"),XE=b(o),XH=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Yy=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],XA=[8,0],XB=[0,b(aV),rz,14,rz,50,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],Xx=b(z),Xy=b(sm),Xz=b(o),Yz=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xu=[0,b(br),38,14,38,50,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Xr=b(z),Xs=b(sm),Xt=b(o),Xv=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xp=[0,b(br),79,14,79,50,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Xm=b(z),Xn=b(rv),Xo=b(o),Xq=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xk=[0,b(br),fT,14,fT,50,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Xh=b(z),Xi=b(Cd),Xj=b(o),Xl=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xw=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xc=[0,b(br),43,14,43,59,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],W_=b(X),W$=b(X),Xa=b("0.41"),Xb=b(o),Xd=[0,b(I),c1,11,c1,56,[0,b(J),[0,b(H),[0,b(B),0]]]],W8=[0,b(br),84,14,84,59,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],W4=b(X),W5=b(X),W6=b("0.205"),W7=b(o),W9=[0,b(I),c1,11,c1,56,[0,b(J),[0,b(H),[0,b(B),0]]]],W2=[0,b(br),dE,14,dE,59,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],WY=b(X),WZ=b(X),W0=b("0.1025"),W1=b(o),W3=[0,b(I),c1,11,c1,56,[0,b(J),[0,b(H),[0,b(B),0]]]],WT=[0,b(br),C5,5,C5,42,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],WS=b("0.20234"),WU=[0,b(I),dE,11,dE,47,[0,b(J),[0,b(H),[0,b(B),0]]]],WQ=[0,b(br),rd,5,236,45,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],WP=b("0.10117"),WR=[0,b(I),dE,11,dE,47,[0,b(J),[0,b(H),[0,b(B),0]]]],WN=[0,b(br),zg,5,zg,42,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],WM=b("0.05059"),WO=[0,b(I),dE,11,dE,47,[0,b(J),[0,b(H),[0,b(B),0]]]],WF=b(cF),WG=[0,b(br),e9,5,166,65,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],WC=b(cF),WD=b(en),WE=b(cF),WH=[0,b(I),eL,11,eL,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Wz=b(cF),WA=[0,b(br),174,5,175,65,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Ww=b(cF),Wx=b(en),Wy=b(cF),WB=[0,b(I),eL,11,eL,31,[0,b(J),[0,b(H),[0,b(B),0]]]],WI=[0,b(I),eL,11,eL,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Wv=[0,b(br),jq,14,jq,34,[0,b(cQ),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Wu=b(o),WJ=[0,b(I),eL,11,eL,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Wt=[0,b(I),eL,11,eL,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Wk=[0,b(U),[0,b(eJ),[0,b(ai),0]]],Wl=[0,b(U),[0,b(eJ),0]],Wm=[0,b(U),[0,b(eJ),[0,b(ac),0]]],Wn=[0,b(U),[0,b(eJ),0]],Wo=[0,b(bN),h9,5,318,21,[0,b(z9),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Wp=[0,b(I),dR,11,dR,34,[0,b(J),[0,b(H),[0,b(B),0]]]],Wb=[0,b(U),[0,b(eJ),[0,b(ai),0]]],Wc=[0,b(U),[0,b(eJ),0]],Wd=[0,b(U),[0,b(eJ),[0,b(ac),0]]],We=[0,b(U),[0,b(eJ),0]],Wf=[0,b(U),[0,b(kR),[0,b(ai),0]]],Wg=[0,b(U),[0,b(kR),0]],Wh=[0,b(U),[0,b(kR),[0,b(ac),0]]],Wi=[0,b(U),[0,b(kR),0]],Wj=[0,b(bN),fl,5,dy,21,[0,b(z9),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Wq=[0,b(I),dR,11,dR,34,[0,b(J),[0,b(H),[0,b(B),0]]]],Wa=[0,b(I),dR,11,dR,34,[0,b(J),[0,b(H),[0,b(B),0]]]],Wr=[0,b(I),dR,11,dR,34,[0,b(J),[0,b(H),[0,b(B),0]]]],V$=[0,b(I),dR,11,dR,34,[0,b(J),[0,b(H),[0,b(B),0]]]],V2=b(z),V3=[8,0],V4=[0,b(aV),xM,6,xM,71,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],V5=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],V0=b(z),V1=[0,b(bN),rY,5,410,72,[0,b(rV),[0,b(eU),[0,b(kc),[0,b(dX),[0,b(aa),[0,b(ad),0]]]]]]],V6=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],V7=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],VY=b(X),VZ=[0,b(bN),fI,5,fI,70,[0,b(Gc),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],V8=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],VX=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],VP=[8,0],VQ=[0,b(aV),251,5,j$,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],VM=b(o),VN=b("0.145"),VO=b(o),VR=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],VJ=[8,0],VK=[0,b(aV),zF,5,261,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],VG=b(o),VH=b("0.1393"),VI=b(o),VL=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],VD=[8,0],VE=[0,b(aV),As,5,qO,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],VA=b(o),VB=b("0.1335"),VC=b(o),VF=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],Vx=[8,0],Vy=[0,b(aV),Aq,5,279,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Vu=b(o),Vv=b("0.1278"),Vw=b(o),Vz=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],Vr=[8,0],Vs=[0,b(aV),287,5,288,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Vo=b(o),Vp=b("0.122"),Vq=b(o),Vt=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],Vl=[8,0],Vm=[0,b(aV),d4,5,ea,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Vi=b(o),Vj=b("0.1163"),Vk=b(o),Vn=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],Vf=[8,0],Vg=[0,b(aV),k1,5,306,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Vc=b(o),Vd=b("0.1105"),Ve=b(o),Vh=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],U$=[8,0],Va=[0,b(aV),dD,5,h9,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],U8=b(o),U9=b("0.0976"),U_=b(o),Vb=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],U5=[8,0],U6=[0,b(aV),323,5,fk,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],U2=b(o),U3=b("0.0847"),U4=b(o),U7=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UZ=[8,0],U0=[0,b(aV),332,5,vk,53,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],UW=b(o),UX=b("0.0717"),UY=b(o),U1=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UT=[8,0],UU=[0,b(aV),m$,5,m$,49,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],UQ=b(o),UR=b("5728"),US=b(o),UV=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],VS=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UO=[8,0],UP=[0,b(aV),eE,14,eE,49,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],UL=b(o),UM=b(v$),UN=b(o),VT=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UI=b(z),UJ=[0,b(br),dl,5,c0,71,[0,b(kn),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(a7),[0,b(ad),0]]]]]]],UH=b(v$),UK=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UG=[0,b(br),rH,29,rH,64,[0,b(kn),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(a7),[0,b(ad),0]]]]]]],UF=b(o),UB=[0,b(dQ),dg,14,dg,34,[0,b(oS),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],Ut=[0,b(U),[0,b(fi),[0,b(ai),0]]],Uu=[0,b(U),[0,b(fi),0]],Uv=[0,b(U),[0,b(fi),[0,b(ac),0]]],Uw=[0,b(U),[0,b(fi),0]],Ux=b(en),Uy=b(kb),Uz=b(b0),UA=b(b0),Up=[0,b(dQ),Cq,14,Cq,34,[0,b(oS),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],Ui=[8,0],Uj=[0,b(aV),l$,5,l$,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Uf=b(X),Ug=b(Cl),Uh=b(o),Uk=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Uc=[8,0],Ud=[0,b(aV),CC,5,CC,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],T$=b(X),Ua=b("0.0539"),Ub=b(o),Ue=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],T8=[8,0],T9=[0,b(aV),yg,5,yg,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],T5=b(X),T6=b("0.0615"),T7=b(o),T_=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],T2=[8,0],T3=[0,b(aV),er,5,er,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],TZ=b(X),T0=b("0.069"),T1=b(o),T4=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],TW=[8,0],TX=[0,b(aV),Cp,5,Cp,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],TT=b(X),TU=b("0.0766"),TV=b(o),TY=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],TQ=[8,0],TR=[0,b(aV),yG,5,yG,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],TN=b(X),TO=b("0.0842"),TP=b(o),TS=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],TK=[8,0],TL=[0,b(aV),ws,5,ws,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],TH=b(X),TI=b("0.0918"),TJ=b(o),TM=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],TE=[8,0],TF=[0,b(aV),vR,5,vR,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],TB=b(X),TC=b("0.1089"),TD=b(o),TG=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Ty=[8,0],Tz=[0,b(aV),EP,5,EP,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Tv=b(X),Tw=b("0.1259"),Tx=b(o),TA=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Ts=[8,0],Tt=[0,b(aV),iK,5,iK,67,[0,b(bq),[0,b(a$),[0,b(bb),0]]]],Tp=b(X),Tq=b("0.143"),Tr=b(o),Tu=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Ul=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],To=[0,b(aV),h0,14,h0,59,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],Tl=b(X),Tm=b(rv),Tn=b(o),Th=[0,b(aV),iE,14,iE,67,[0,b(cD),[0,b(a$),[0,b(bb),0]]]],Td=b(_),Te=b(_),Tf=b(Cl),Tg=b(o),S8=b(z),S9=[0,b(bN),423,6,ru,72,[0,b(rV),[0,b(eU),[0,b(kc),[0,b(dX),[0,b(aa),[0,b(ad),0]]]]]]],S_=[0,b(I),du,11,du,35,[0,b(J),[0,b(H),[0,b(B),0]]]],S3=[0,b(cn),[0,b(iO),[0,b(ai),0]]],S4=[0,b(cn),[0,b(iO),0]],S5=[0,b(cn),[0,b(iO),[0,b(ac),0]]],S6=[0,b(cn),[0,b(iO),0]],S7=[0,b(bN),rO,5,dR,59,[0,b(Gc),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],S$=[0,b(I),du,11,du,35,[0,b(J),[0,b(H),[0,b(B),0]]]],S2=[0,b(I),du,11,du,35,[0,b(J),[0,b(H),[0,b(B),0]]]],Ta=[0,b(I),du,11,du,35,[0,b(J),[0,b(H),[0,b(B),0]]]],S1=[0,b(I),du,11,du,35,[0,b(J),[0,b(H),[0,b(B),0]]]],SV=b(z),SW=[0,b(bN),gp,5,gM,71,[0,b(rV),[0,b(eU),[0,b(kc),[0,b(dX),[0,b(aa),[0,b(ad),0]]]]]]],SX=[0,b(I),eM,11,eM,34,[0,b(J),[0,b(H),[0,b(B),0]]]],SU=[0,b(aY),31,9,31,32,[0,b(eI),[0,b(aZ),0]]],SY=[0,b(I),eM,11,eM,34,[0,b(J),[0,b(H),[0,b(B),0]]]],ST=[0,b(I),eM,11,eM,34,[0,b(J),[0,b(H),[0,b(B),0]]]],SN=[0,b(aV),23,5,23,67,[0,b(FZ),[0,b(f3),0]]],SL=b(EL),SM=b("5628600"),SO=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],SJ=[0,b(aV),56,5,56,67,[0,b(u_),[0,b(f3),0]]],SH=b(FE),SI=b("5684900"),SK=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],SF=[0,b(aV),89,5,89,67,[0,b(wz),[0,b(f3),0]]],SD=b(ET),SE=b("5775900"),SG=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],SB=[0,b(aV),bp,5,bp,67,[0,b(b1),[0,b(CX),[0,b(f3),0]]]],Sz=b(wb),SA=b("5827900"),SC=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],SP=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],Sy=[0,b(br),Er,14,Er,30,[0,b(Du),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Sw=b(AK),Sx=b("5595000"),Sq=[0,b(aV),30,5,30,67,[0,b(FZ),[0,b(f3),0]]],So=b(EL),Sp=b("7877000"),Sr=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Sm=[0,b(aV),63,5,63,67,[0,b(u_),[0,b(f3),0]]],Sk=b(FE),Sl=b("7955800"),Sn=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Si=[0,b(aV),96,5,96,67,[0,b(wz),[0,b(f3),0]]],Sg=b(ET),Sh=b("8083100"),Sj=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Se=[0,b(aV),i1,5,i1,67,[0,b(b1),[0,b(CX),[0,b(f3),0]]]],Sc=b(wb),Sd=b("8155800"),Sf=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Ss=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Sb=[0,b(br),dD,14,dD,31,[0,b(Du),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],R$=b(AK),Sa=b("7830000"),R7=[0,b(aY),34,14,34,36,[0,b(eI),[0,b(aZ),0]]],R8=[0,b(I),hr,11,hr,33,[0,b(J),[0,b(H),[0,b(B),0]]]],R6=[0,b(I),hr,11,hr,33,[0,b(J),[0,b(H),[0,b(B),0]]]],R3=[0,b(bN),75,14,75,64,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],RZ=[0,b(cn),[0,b(dj),[0,b(ai),0]]],R0=[0,b(cn),[0,b(dj),0]],R1=[0,b(cn),[0,b(dj),[0,b(ac),0]]],R2=[0,b(cn),[0,b(dj),0]],RU=[0,b(dQ),83,19,83,67,[0,b(nF),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],RV=[0,b(I),hK,11,hK,38,[0,b(J),[0,b(H),[0,b(B),0]]]],RT=[0,b(dQ),56,14,56,41,[0,b(nF),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],RW=[0,b(I),hK,11,hK,38,[0,b(J),[0,b(H),[0,b(B),0]]]],RS=[0,b(I),hK,11,hK,38,[0,b(J),[0,b(H),[0,b(B),0]]]],RN=[0,b(aY),33,14,33,40,[0,b(eI),[0,b(aZ),0]]],RH=[0,b(I),e9,14,e9,46,[0,b(J),[0,b(H),[0,b(B),0]]]],RD=[0,b(I),h5,14,h5,56,[0,b(J),[0,b(H),[0,b(B),0]]]],RC=[1,0],Ry=[0,b(I),f9,14,f9,50,[0,b(J),[0,b(H),[0,b(B),0]]]],Rs=[0,b(I),eE,14,eE,32,[0,b(J),[0,b(H),[0,b(B),0]]]],Rm=[0,b(dQ),64,14,64,44,[0,b(nF),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],Rl=b(_),Rh=[0,b(br),dk,14,dk,35,[0,b(fP),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(a7),[0,b(ad),0]]]]]]],Rg=b(_),Rb=[0,b(bN),rj,5,zF,56,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Ra=[1,0],Rc=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],Q7=[0,b(bN),qO,5,271,48,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Q6=[0,0],Q8=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],Q5=[0,b(bN),FC,5,FC,70,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Q4=[0,0],Q9=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],Q3=[0,b(bN),CT,5,CT,69,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Q2=[0,0],Q_=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],Q1=[0,b(bN),oh,5,oh,60,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Q0=[0,0],Q$=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],Rd=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],QZ=[0,b(I),98,11,98,20,[0,b(J),[0,b(H),[0,b(B),0]]]],QV=[0,b(bN),nV,5,nV,70,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QU=[1,0],QW=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QS=[0,b(bN),j7,5,m1,56,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QR=[2,0],QT=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QN=[0,b(bN),264,5,rn,48,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QM=[0,0],QO=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QL=[0,b(bN),x7,5,x7,69,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QK=[0,0],QP=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QJ=[0,b(bN),Ab,5,Ab,60,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QI=[0,0],QQ=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QX=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QH=[0,b(I),97,11,97,26,[0,b(J),[0,b(H),[0,b(B),0]]]],QY=[0,b(U),[0,b(fi),0]],Re=[0,b(U),[0,b("versement"),0]],Ri=[0,b(I),hc,11,hc,32,[0,b(J),[0,b(H),[0,b(B),0]]]],Rf=[0,b(I),hc,11,hc,32,[0,b(J),[0,b(H),[0,b(B),0]]]],Rj=[0,b(U),[0,b("nombre_enfants_l521_1"),0]],Rn=[0,b(I),ov,11,ov,41,[0,b(J),[0,b(H),[0,b(B),0]]]],Rk=[0,b(I),ov,11,ov,41,[0,b(J),[0,b(H),[0,b(B),0]]]],Ro=[0,b(U),[0,b("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],Rp=[0,b(U),[0,b(wJ),[0,b(q9),0]]],Rq=[0,b(U),[0,b(wJ),[0,b(q9),0]]],Rt=[0,b(I),eE,14,eE,32,[0,b(J),[0,b(H),[0,b(B),0]]]],Ru=[0,b(U),[0,b("bmaf.date_courante"),0]],Rr=[0,b(I),eE,14,eE,32,[0,b(J),[0,b(H),[0,b(B),0]]]],Rv=[0,b(U),[0,b(AY),[0,b(f4),0]]],Rw=[0,b(U),[0,b(AY),[0,b(f4),0]]],Rz=[0,b(I),f9,14,f9,50,[0,b(J),[0,b(H),[0,b(B),0]]]],RA=[0,b(U),[0,b(w2),0]],Rx=[0,b(I),f9,14,f9,50,[0,b(J),[0,b(H),[0,b(B),0]]]],RE=[0,b(I),h5,14,h5,56,[0,b(J),[0,b(H),[0,b(B),0]]]],RF=[0,b(U),[0,b(Bk),0]],RB=[0,b(I),h5,14,h5,56,[0,b(J),[0,b(H),[0,b(B),0]]]],RI=[0,b(I),e9,14,e9,46,[0,b(J),[0,b(H),[0,b(B),0]]]],RJ=[0,b(U),[0,b(yT),0]],RG=[0,b(I),e9,14,e9,46,[0,b(J),[0,b(H),[0,b(B),0]]]],RK=[0,b(U),[0,b(oK),[0,b(cn),0]]],RL=[0,b(U),[0,b(oK),[0,b(cn),0]]],RO=[0,b(aY),33,14,33,40,[0,b(eI),[0,b(aZ),0]]],RP=[0,b(U),[0,b("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],RM=[0,b(aY),33,14,33,40,[0,b(eI),[0,b(aZ),0]]],RQ=[0,b(U),[0,b(Db),[0,b(ri),0]]],RR=[0,b(U),[0,b(Db),[0,b(ri),0]]],RX=[0,b(U),[0,b(eJ),0]],R4=[0,b(I),95,11,95,61,[0,b(J),[0,b(H),[0,b(B),0]]]],RY=[0,b(I),95,11,95,61,[0,b(J),[0,b(H),[0,b(B),0]]]],R5=[0,b(U),[0,b("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],R9=[0,b(U),[0,b(kR),0]],St=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],R_=[0,b(I),c2,11,c2,28,[0,b(J),[0,b(H),[0,b(B),0]]]],Su=[0,b(U),[0,b("plafond_II_d521_3"),0]],SQ=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],Sv=[0,b(I),cL,11,cL,27,[0,b(J),[0,b(H),[0,b(B),0]]]],SR=[0,b(U),[0,b("plafond_I_d521_3"),0]],SZ=[0,b(I),eM,11,eM,34,[0,b(J),[0,b(H),[0,b(B),0]]]],SS=[0,b(I),eM,11,eM,34,[0,b(J),[0,b(H),[0,b(B),0]]]],S0=[0,b(U),[0,b("droit_ouvert_compl\xc3\xa9ment"),0]],Tb=[0,b(U),[0,b(ke),0]],Ti=[0,b(I),fT,11,fT,64,[0,b(J),[0,b(H),[0,b(B),0]]]],Tc=[0,b(I),fT,11,fT,64,[0,b(J),[0,b(H),[0,b(B),0]]]],Tj=[0,b(U),[0,b("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],Um=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Tk=[0,b(I),bp,11,bp,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Un=[0,b(U),[0,b("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],Uq=[0,b(I),h$,11,h$,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Uo=[0,b(I),h$,11,h$,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Ur=[0,b(U),[0,b("nombre_total_enfants"),0]],UC=[0,b(I),nZ,11,nZ,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Us=[0,b(I),nZ,11,nZ,31,[0,b(J),[0,b(H),[0,b(B),0]]]],UD=[0,b(U),[0,b("nombre_moyen_enfants"),0]],VU=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],UE=[0,b(I),bd,11,bd,46,[0,b(J),[0,b(H),[0,b(B),0]]]],VV=[0,b(U),[0,b("montant_initial_base_premier_enfant"),0]],V9=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],VW=[0,b(I),cG,11,cG,28,[0,b(J),[0,b(H),[0,b(B),0]]]],V_=[0,b(U),[0,b("droit_ouvert_base"),0]],Ws=[0,b(U),[0,b(bG),0]],WK=[0,b(U),[0,b(kW),0]],WV=[0,b(I),dE,11,dE,47,[0,b(J),[0,b(H),[0,b(B),0]]]],WL=[0,b(I),dE,11,dE,47,[0,b(J),[0,b(H),[0,b(B),0]]]],WW=[0,b(U),[0,b("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],Xe=[0,b(I),c1,11,c1,56,[0,b(J),[0,b(H),[0,b(B),0]]]],WX=[0,b(I),c1,11,c1,56,[0,b(J),[0,b(H),[0,b(B),0]]]],Xf=[0,b(U),[0,b("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],YA=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],Xg=[0,b(I),a8,11,a8,47,[0,b(J),[0,b(H),[0,b(B),0]]]],YB=[0,b(U),[0,b("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],YG=[0,b(I),mF,11,mF,38,[0,b(J),[0,b(H),[0,b(B),0]]]],YC=[0,b(I),mF,11,mF,38,[0,b(J),[0,b(H),[0,b(B),0]]]],YH=[0,b(U),[0,b("rapport_enfants_total_moyen"),0]],Za=[0,b(U),[0,b(j9),0]],Zh=[0,b(I),dx,11,dx,36,[0,b(J),[0,b(H),[0,b(B),0]]]],Zb=[0,b(I),dx,11,dx,36,[0,b(J),[0,b(H),[0,b(B),0]]]],Zi=[0,b(U),[0,b("montant_vers\xc3\xa9_forfaitaire"),0]],Zs=[0,b(I),dP,11,dP,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Zj=[0,b(I),dP,11,dP,31,[0,b(J),[0,b(H),[0,b(B),0]]]],Zt=[0,b(U),[0,b("montant_initial_base"),0]],ZS=[0,b(U),[0,b(j2),0]],Z9=[0,b(I),dg,11,dg,52,[0,b(J),[0,b(H),[0,b(B),0]]]],ZT=[0,b(I),dg,11,dg,52,[0,b(J),[0,b(H),[0,b(B),0]]]],Z_=[0,b(U),[0,b("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_b=[0,b(I),kZ,11,kZ,43,[0,b(J),[0,b(H),[0,b(B),0]]]],Z$=[0,b(I),kZ,11,kZ,43,[0,b(J),[0,b(H),[0,b(B),0]]]],_c=[0,b(U),[0,b("montant_avec_garde_altern\xc3\xa9e_base"),0]],_r=[0,b(U),[0,b(j8),0]],_v=[0,b(I),kY,11,kY,29,[0,b(J),[0,b(H),[0,b(B),0]]]],_s=[0,b(I),kY,11,kY,29,[0,b(J),[0,b(H),[0,b(B),0]]]],_w=[0,b(U),[0,b("montant_vers\xc3\xa9_base"),0]],_F=[0,b(I),nv,11,nv,35,[0,b(J),[0,b(H),[0,b(B),0]]]],_x=[0,b(I),nv,11,nv,35,[0,b(J),[0,b(H),[0,b(B),0]]]],_G=[0,b(U),[0,b("montant_vers\xc3\xa9_majoration"),0]],_J=[0,b(I),i5,11,i5,58,[0,b(J),[0,b(H),[0,b(B),0]]]],_H=[0,b(I),i5,11,i5,58,[0,b(J),[0,b(H),[0,b(B),0]]]],_K=[0,b(U),[0,b("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],_S=[0,b(I),nY,11,nY,59,[0,b(J),[0,b(H),[0,b(B),0]]]],_L=[0,b(I),nY,11,nY,59,[0,b(J),[0,b(H),[0,b(B),0]]]],_T=[0,b(U),[0,b("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],_X=[0,b(I),cj,12,cj,25,[0,b(J),[0,b(H),[0,b(B),0]]]],_U=[0,b(I),cj,12,cj,25,[0,b(J),[0,b(H),[0,b(B),0]]]],_Y=[0,b(U),[0,b("montant_vers\xc3\xa9"),0]],_Z=[0,b(bN),w4,5,rd,6,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],_0=[0,b(bN),w4,5,rd,6,[0,b(dW),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QC=[0,b("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,b("Article L821-3"),[0,b(z0),[0,b(EX),[0,b(yj),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]]]],QD=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qy=[0,b(bN),60,5,62,62,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Qz=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qx=[0,b(bN),49,5,50,50,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],QA=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],QB=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],QE=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qw=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],QF=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qv=[0,b(I),57,12,57,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qr=[0,b(bN),68,5,71,56,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],Qs=[0,b(I),58,12,58,31,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qq=[0,b(I),58,12,58,31,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qt=[0,b(I),58,12,58,31,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qp=[0,b(I),58,12,58,31,[0,b(bD),[0,b(H),[0,b(B),0]]]],Ql=[0,b(dQ),nV,18,nV,41,[0,b(xw),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(c5),[0,b(ad),0]]]]]]],Qj=b(oN),Qk=b(n0),Qm=[0,b(I),59,11,59,27,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qi=[0,b(dQ),31,14,31,30,[0,b(lZ),[0,b(nQ),[0,b(d9),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],Qg=b(oN),Qh=b(n0),P7=[5,0],P8=[4,0],P9=[3,0],P_=[2,0],P$=[1,0],Qa=[0,0],Qb=[0,b(bN),yM,5,rH,30,[0,b(CE),[0,b(ys),[0,b(kc),[0,b(dX),[0,b(aa),[0,b(ad),0]]]]]]],Qc=[0,b(I),61,12,61,35,[0,b(bD),[0,b(H),[0,b(B),0]]]],P6=[0,b(I),61,12,61,35,[0,b(bD),[0,b(H),[0,b(B),0]]]],P0=[0,b(I),68,14,68,28,[0,b(bD),[0,b(H),[0,b(B),0]]]],PW=[0,b(I),69,14,69,32,[0,b(bD),[0,b(H),[0,b(B),0]]]],PS=[0,b(dQ),21,14,21,26,[0,b(lZ),[0,b(nQ),[0,b(d9),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],PT=[0,b(I),60,12,60,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],PR=[0,b(I),60,12,60,24,[0,b(bD),[0,b(H),[0,b(B),0]]]],PU=[0,b(cn),[0,b(y3),0]],PX=[0,b(I),69,14,69,32,[0,b(bD),[0,b(H),[0,b(B),0]]]],PY=[0,b(cn),[0,b(E7),0]],PV=[0,b(I),69,14,69,32,[0,b(bD),[0,b(H),[0,b(B),0]]]],P1=[0,b(I),68,14,68,28,[0,b(bD),[0,b(H),[0,b(B),0]]]],P2=[0,b(cn),[0,b(Dz),0]],PZ=[0,b(I),68,14,68,28,[0,b(bD),[0,b(H),[0,b(B),0]]]],P3=[0,b(cn),[0,b(f8),[0,b(hi),0]]],P4=[0,b(cn),[0,b(f8),[0,b(hi),0]]],Qd=[0,b(I),61,12,61,35,[0,b(bD),[0,b(H),[0,b(B),0]]]],P5=[0,b(I),61,12,61,35,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qe=[0,b(cn),[0,b(u$),0]],Qn=[0,b(I),59,11,59,27,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qf=[0,b(I),59,11,59,27,[0,b(bD),[0,b(H),[0,b(B),0]]]],Qo=[0,b(cn),[0,b(Ae),0]],Qu=[0,b(cn),[0,b(iO),0]],QG=[0,b(cn),[0,b(dj),0]],PN=[0,b(ew),28,5,29,33,[0,b(Cj),[0,b(cb),0]]],PM=b(xD),PO=[0,b(ew),6,12,6,19,[0,b(cb),0]],PK=[0,b(ew),48,5,49,33,[0,b(AF),[0,b(cb),0]]],PJ=b(xe),PL=[0,b(ew),6,12,6,19,[0,b(cb),0]],PH=[0,b(ew),64,5,65,33,[0,b(B7),[0,b(cb),0]]],PG=b(BV),PI=[0,b(ew),6,12,6,19,[0,b(cb),0]],PE=[0,b(ew),82,5,83,33,[0,b(wL),[0,b(cb),0]]],PD=b(BP),PF=[0,b(ew),6,12,6,19,[0,b(cb),0]],PP=[0,b(ew),6,12,6,19,[0,b(cb),0]],PC=[0,b(ew),6,12,6,19,[0,b(cb),0]],PQ=[0,b(f4),[0,b(bO),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,b(bt),29,5,38,6,[0,b(b1),[0,b(lX),[0,b(aB),0]]]],Pp=b(wC),Pz=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],Pm=[8,0],Pn=[0,b(bt),47,5,49,6,[0,b(b1),[0,b(lX),[0,b(aB),0]]]],Pl=b(xA),Po=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),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,b(bt),68,5,77,6,[0,b(b1),[0,b(nN),[0,b(aB),0]]]],Pa=b(AL),Pk=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],O9=[8,0],O_=[0,b(bt),86,5,88,6,[0,b(b1),[0,b(nN),[0,b(aB),0]]]],O8=b(u2),O$=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),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,b(bt),c1,5,bp,6,[0,b(b1),[0,b(l2),[0,b(aB),0]]]],OX=b(Bo),O7=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],OU=[8,0],OV=[0,b(bt),fe,5,ho,6,[0,b(b1),[0,b(l2),[0,b(aB),0]]]],OT=b(EA),OW=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),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,b(bt),o4,5,hr,6,[0,b(b1),[0,b(nj),[0,b(aB),0]]]],OI=b(BG),OS=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],OF=[8,0],OG=[0,b(bt),e9,5,eE,6,[0,b(b1),[0,b(nj),[0,b(aB),0]]]],OE=b(wQ),OH=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),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,b(bt),h0,5,iE,6,[0,b(fS),[0,b(mM),[0,b(aB),0]]]],Ot=b(zI),OD=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],Oq=[8,0],Or=[0,b(bt),wU,5,yv,6,[0,b(fS),[0,b(mM),[0,b(aB),0]]]],Op=b(Ez),Os=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],Of=[7,0],Og=[5,0],Oh=[4,0],Oi=[3,0],Oj=[2,0],Ok=[1,0],Ol=[0,0],Om=[6,0],On=[0,b(bt),vy,5,EY,6,[0,b(fS),[0,b(ok),[0,b(aB),0]]]],Oe=b(Eh),Oo=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],Ob=[8,0],Oc=[0,b(bt),E6,5,vu,6,[0,b(fS),[0,b(ok),[0,b(aB),0]]]],Oa=b(Ff),Od=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],N2=[7,0],N3=[5,0],N4=[4,0],N5=[3,0],N6=[2,0],N7=[1,0],N8=[0,0],N9=[6,0],N_=[0,b(bt),rn,5,nR,6,[0,b(b1),[0,b(m9),[0,b(aB),0]]]],N1=b(vX),N$=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],NY=[8,0],NZ=[0,b(bt),A8,5,ng,6,[0,b(b1),[0,b(m9),[0,b(aB),0]]]],NX=b(zH),N0=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],PA=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],NW=[0,b(bt),11,12,11,24,[0,b(B),[0,b(aB),0]]],PB=[0,b(hi),[0,b(z2),0]],NT=[0,b(aY),12,14,12,25,[0,b(eI),[0,b(aZ),0]]],NP=[2,0],NQ=b(o),NR=[1,0],NS=b("-1"),NU=[0,b(I),80,12,80,23,[0,b(J),[0,b(H),[0,b(B),0]]]],NO=[0,b(I),80,12,80,23,[0,b(J),[0,b(H),[0,b(B),0]]]],NV=[0,b(ri),[0,b("le_plus_\xc3\xa2g\xc3\xa9"),0]],NL=[0,b(dQ),78,14,78,41,[0,b(nF),[0,b(aM),[0,b(aO),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],NM=[0,b(I),76,12,76,39,[0,b(J),[0,b(H),[0,b(B),0]]]],NK=[0,b(I),76,12,76,39,[0,b(J),[0,b(H),[0,b(B),0]]]],NN=[0,b(q9),[0,b(eJ),0]],NC=b(qF),ND=b(qT),NE=b(EV),NF=b(q1),NG=b(q2),NH=b(rA),NI=b(rt),NJ=[0,b("Enfant"),0],Ns=b(mA),Nu=b(ot),Nv=b(md),Nw=b(Dl),Nx=b(yN),Ny=b(o7),Nz=b(CV),NA=b(no),NB=b(oF),Nt=[0,b(BQ),0],Nj=b(og),Nl=b(U),Nm=b(qS),Nn=b(nX),No=b(DL),Np=b(iR),Nq=b(BN),Nr=b(yS),Nk=[0,b(FM),0],Ne=b("Compl\xc3\xa8te"),Ng=b("Partag\xc3\xa9e"),Nh=b("Z\xc3\xa9ro"),Nf=[0,b("PriseEnCompte"),0],Na=b(kr),Nc=b(kg),Nd=b(Cc),Nb=[0,b(CN),0],M6=b(A2),M8=b(DW),M9=b(j4),M_=b(Fo),M$=b(yC),M7=[0,b("PriseEnCharge"),0],aaK=b(ae),aak=b(mA),aal=b(ot),aam=b(wj),aan=b(md),aao=b(oF),aap=b(Fg),aaq=b(w9),aar=b(o7),aas=b(no),aau=[7,0],aav=[5,0],aaw=[4,0],aax=[6,0],aay=[8,0],aaz=[2,0],aaA=[3,0],aaB=[1,0],aaC=[0,0],aat=[0,[11,b(bf),[2,0,[11,b(BL),0]]],b(wE)],$5=b(vP),$6=b(x0),$7=b(nX),$8=b(Ew),$9=b(iR),$_=b(U),$$=b(qp),aaa=b(og),aac=[0,0],aad=[2,0],aae=[1,0],aaf=[5,0],aag=[6,0],aah=[3,0],aai=[7,0],aaj=[4,0],aab=[0,[11,b(bf),[2,0,[11,b(DX),0]]],b(FO)],$Y=b(r0),$Z=b(kr),$0=b(kg),$2=[1,0],$3=[0,0],$4=[2,0],$1=[0,[11,b(bf),[2,0,[11,b(xT),0]]],b(wo)],$N=b(j4),$O=b(q$),$P=b(qN),$Q=b(rr),$R=b(qK),$T=[4,0],$U=[3,0],$V=[0,0],$W=[1,0],$X=[2,0],$S=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'PriseEnCharge.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],$L=[0,b(B6),b(o0),b(f8),b(Dv),b(FI),b(vV),b(xa)],$M=[0,b(f8),b(vV),b(FI),b(xa),b(o0),b(B6),b(Dv)],aaS=b("AllocationsFamilialesLib"),bty=[0,b(e7),zM,14,zM,25,[0,b("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],btr=b(o),bts=b(o),btx=b(b0),btt=[0,b(a4),[0,b(av),[0,b(ai),0]]],btu=[0,b(a4),[0,b(av),0]],btv=[0,b(a4),[0,b(av),[0,b(ac),0]]],btw=[0,b(a4),[0,b(av),0]],btn=[0,b(e),u8,14,u8,63,[0,b(be),[0,b(f),0]]],btj=[0,b(e),qY,14,qY,25,[0,b(be),[0,b(f),0]]],btd=[0,b(e),ir,5,ir,70,[0,b(be),[0,b(f),0]]],bs$=[0,b(e),hu,14,hu,58,[0,b(be),[0,b(f),0]]],bs7=[0,b(e),hv,14,hv,54,[0,b(be),[0,b(f),0]]],bs3=[0,b(e),io,14,io,51,[0,b(be),[0,b(f),0]]],bsX=[0,b(e),ff,14,ff,59,[0,b(be),[0,b(f),0]]],bsT=[0,b(e),ie,14,ie,38,[0,b(be),[0,b(f),0]]],bsP=[0,b(e),hD,14,hD,34,[0,b(be),[0,b(f),0]]],bsL=[0,b(e),ia,14,ia,31,[0,b(be),[0,b(f),0]]],bsH=[0,b(e),AR,14,AR,48,[0,b(be),[0,b(f),0]]],bsI=[0,b(e),lY,11,lY,45,[0,b(be),[0,b(f),0]]],bsG=[0,b(e),lY,11,lY,45,[0,b(be),[0,b(f),0]]],bsJ=[0,b(cK),[0,b("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],bsM=[0,b(e),ia,14,ia,31,[0,b(be),[0,b(f),0]]],bsN=[0,b(cK),[0,b("calculette.m\xc3\xa9nage"),0]],bsK=[0,b(e),ia,14,ia,31,[0,b(be),[0,b(f),0]]],bsQ=[0,b(e),hD,14,hD,34,[0,b(be),[0,b(f),0]]],bsR=[0,b(cK),[0,b("calculette.demandeur"),0]],bsO=[0,b(e),hD,14,hD,34,[0,b(be),[0,b(f),0]]],bsU=[0,b(e),ie,14,ie,38,[0,b(be),[0,b(f),0]]],bsV=[0,b(cK),[0,b("calculette.date_courante"),0]],bsS=[0,b(e),ie,14,ie,38,[0,b(be),[0,b(f),0]]],bsY=[0,b(e),ff,14,ff,59,[0,b(be),[0,b(f),0]]],bsZ=[0,b(cK),[0,b("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bsW=[0,b(e),ff,14,ff,59,[0,b(be),[0,b(f),0]]],bs0=[0,b(cK),[0,b(DV),[0,b(a4),0]]],bs1=[0,b(cK),[0,b(DV),[0,b(a4),0]]],bs4=[0,b(e),io,14,io,51,[0,b(be),[0,b(f),0]]],bs5=[0,b(cK),[0,b("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],bs2=[0,b(e),io,14,io,51,[0,b(be),[0,b(f),0]]],bs8=[0,b(e),hv,14,hv,54,[0,b(be),[0,b(f),0]]],bs9=[0,b(cK),[0,b("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],bs6=[0,b(e),hv,14,hv,54,[0,b(be),[0,b(f),0]]],bta=[0,b(e),hu,14,hu,58,[0,b(be),[0,b(f),0]]],btb=[0,b(cK),[0,b("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],bs_=[0,b(e),hu,14,hu,58,[0,b(be),[0,b(f),0]]],bte=[0,b(e),ir,5,ir,70,[0,b(be),[0,b(f),0]]],btf=[0,b(cK),[0,b("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btc=[0,b(e),ir,5,ir,70,[0,b(be),[0,b(f),0]]],btg=[0,b(cK),[0,b(wK),[0,b(a4),0]]],bth=[0,b(cK),[0,b(wK),[0,b(a4),0]]],btk=[0,b(e),nL,12,nL,23,[0,b(be),[0,b(f),0]]],bti=[0,b(e),nL,12,nL,23,[0,b(be),[0,b(f),0]]],btl=[0,b(cK),[0,b(n6),0]],bto=[0,b(e),nH,11,nH,60,[0,b(be),[0,b(f),0]]],btm=[0,b(e),nH,11,nH,60,[0,b(be),[0,b(f),0]]],btp=[0,b(cK),[0,b(kH),0]],btz=[0,b(e),ox,12,ox,23,[0,b(be),[0,b(f),0]]],btq=[0,b(e),ox,12,ox,23,[0,b(be),[0,b(f),0]]],btA=[0,b(cK),[0,b("aide_finale"),0]],bsC=[0,b(aG),Fw,14,Fw,33,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bst=b(o),bsu=[0,b(cN),[0,b(av),[0,b(ai),0]]],bsv=[0,b(cN),[0,b(av),0]],bsw=[0,b(cN),[0,b(av),[0,b(ac),0]]],bsx=[0,b(cN),[0,b(av),0]],bsy=[0,b(cO),[0,b(av),[0,b(ai),0]]],bsz=[0,b(cO),[0,b(av),0]],bsA=[0,b(cO),[0,b(av),[0,b(ac),0]]],bsB=[0,b(cO),[0,b(av),0]],bsp=[0,b(aG),f2,14,f2,36,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bsh=[0,b(cO),[0,b(av),[0,b(ai),0]]],bsi=[0,b(cO),[0,b(av),0]],bsj=[0,b(cO),[0,b(av),[0,b(ac),0]]],bsk=[0,b(cO),[0,b(av),0]],bsl=[0,b(cN),[0,b(av),[0,b(ai),0]]],bsm=[0,b(cN),[0,b(av),0]],bsn=[0,b(cN),[0,b(av),[0,b(ac),0]]],bso=[0,b(cN),[0,b(av),0]],bsq=[0,b(e),nM,12,nM,34,[0,b(ax),[0,b(f),0]]],bsg=[0,b(e),nM,12,nM,34,[0,b(ax),[0,b(f),0]]],bsd=[0,b(aG),zr,14,zr,25,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],br$=[0,b(e),xG,14,xG,63,[0,b(ax),[0,b(f),0]]],br5=[0,b(e),jg,14,jg,62,[0,b(ax),[0,b(f),0]]],br1=[0,b(e),hU,14,hU,53,[0,b(ax),[0,b(f),0]]],brX=[0,b(e),i7,5,i7,65,[0,b(ax),[0,b(f),0]]],brT=[0,b(e),jm,14,jm,68,[0,b(ax),[0,b(f),0]]],brP=[0,b(e),f2,14,f2,66,[0,b(ax),[0,b(f),0]]],brL=[0,b(aG),gO,14,gO,58,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brK=[0,0],brG=[0,b(e),h4,14,h4,64,[0,b(ax),[0,b(f),0]]],brA=[0,b(aG),gs,14,gs,50,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brx=[2,0],bry=[1,0],brz=[2,0],brt=[0,b(e),iD,14,iD,54,[0,b(ax),[0,b(f),0]]],brp=[0,b(e),iW,14,iW,45,[0,b(ax),[0,b(f),0]]],brl=[0,b(e),hs,14,hs,66,[0,b(ax),[0,b(f),0]]],brh=[0,b(e),gv,14,gv,60,[0,b(ax),[0,b(f),0]]],brd=[0,b(e),gt,14,gt,58,[0,b(ax),[0,b(f),0]]],bq$=[0,b(e),iZ,14,iZ,56,[0,b(ax),[0,b(f),0]]],bq5=[0,b(e),hL,14,hL,67,[0,b(ax),[0,b(f),0]]],bq1=[0,b(e),it,14,it,63,[0,b(ax),[0,b(f),0]]],bqX=[0,b(e),jl,14,jl,60,[0,b(ax),[0,b(f),0]]],bqR=[0,b(aG),h2,5,h2,74,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bqN=[0,b(e),i$,14,i$,55,[0,b(ax),[0,b(f),0]]],bqJ=[0,b(e),g_,14,g_,52,[0,b(ax),[0,b(f),0]]],bqF=[0,b(e),hg,14,hg,59,[0,b(ax),[0,b(f),0]]],bqG=[0,b(e),hg,14,hg,59,[0,b(ax),[0,b(f),0]]],bqH=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bqE=[0,b(e),hg,14,hg,59,[0,b(ax),[0,b(f),0]]],bqK=[0,b(e),g_,14,g_,52,[0,b(ax),[0,b(f),0]]],bqL=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bqI=[0,b(e),g_,14,g_,52,[0,b(ax),[0,b(f),0]]],bqO=[0,b(e),i$,14,i$,55,[0,b(ax),[0,b(f),0]]],bqP=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],bqM=[0,b(e),i$,14,i$,55,[0,b(ax),[0,b(f),0]]],bqS=[0,b(aG),h2,5,h2,74,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bqT=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],bqQ=[0,b(aG),h2,5,h2,74,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bqU=[0,b(a4),[0,b(uW),[0,b(b8),0]]],bqV=[0,b(a4),[0,b(uW),[0,b(b8),0]]],bqY=[0,b(e),jl,14,jl,60,[0,b(ax),[0,b(f),0]]],bqZ=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],bqW=[0,b(e),jl,14,jl,60,[0,b(ax),[0,b(f),0]]],bq2=[0,b(e),it,14,it,63,[0,b(ax),[0,b(f),0]]],bq3=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],bq0=[0,b(e),it,14,it,63,[0,b(ax),[0,b(f),0]]],bq6=[0,b(e),hL,14,hL,67,[0,b(ax),[0,b(f),0]]],bq7=[0,b(a4),[0,b("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bq4=[0,b(e),hL,14,hL,67,[0,b(ax),[0,b(f),0]]],bq8=[0,b(a4),[0,b(C3),[0,b(b3),0]]],bq9=[0,b(a4),[0,b(C3),[0,b(b3),0]]],bra=[0,b(e),iZ,14,iZ,56,[0,b(ax),[0,b(f),0]]],brb=[0,b(a4),[0,b("calcul_allocation_logement.mode_occupation"),0]],bq_=[0,b(e),iZ,14,iZ,56,[0,b(ax),[0,b(f),0]]],bre=[0,b(e),gt,14,gt,58,[0,b(ax),[0,b(f),0]]],brf=[0,b(a4),[0,b("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brc=[0,b(e),gt,14,gt,58,[0,b(ax),[0,b(f),0]]],bri=[0,b(e),gv,14,gv,60,[0,b(ax),[0,b(f),0]]],brj=[0,b(a4),[0,b("calcul_allocation_logement.situation_familiale"),0]],brg=[0,b(e),gv,14,gv,60,[0,b(ax),[0,b(f),0]]],brm=[0,b(e),hs,14,hs,66,[0,b(ax),[0,b(f),0]]],brn=[0,b(a4),[0,b("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],brk=[0,b(e),hs,14,hs,66,[0,b(ax),[0,b(f),0]]],brq=[0,b(e),iW,14,iW,45,[0,b(ax),[0,b(f),0]]],brr=[0,b(a4),[0,b("calcul_allocation_logement.zone"),0]],bro=[0,b(e),iW,14,iW,45,[0,b(ax),[0,b(f),0]]],bru=[0,b(e),iD,14,iD,54,[0,b(ax),[0,b(f),0]]],brv=[0,b(a4),[0,b("calcul_allocation_logement.date_courante"),0]],brs=[0,b(e),iD,14,iD,54,[0,b(ax),[0,b(f),0]]],brB=[0,b(aG),gs,14,gs,50,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brC=[0,b(a4),[0,b("calcul_allocation_logement.type_aide"),0]],brw=[0,b(aG),gs,14,gs,50,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brD=[0,b(a4),[0,b(Ei),[0,b(cN),0]]],brE=[0,b(a4),[0,b(Ei),[0,b(cN),0]]],brH=[0,b(e),h4,14,h4,64,[0,b(ax),[0,b(f),0]]],brI=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],brF=[0,b(e),h4,14,h4,64,[0,b(ax),[0,b(f),0]]],brM=[0,b(aG),gO,14,gO,58,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brN=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],brJ=[0,b(aG),gO,14,gO,58,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],brQ=[0,b(e),f2,14,f2,66,[0,b(ax),[0,b(f),0]]],brR=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brO=[0,b(e),f2,14,f2,66,[0,b(ax),[0,b(f),0]]],brU=[0,b(e),jm,14,jm,68,[0,b(ax),[0,b(f),0]]],brV=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],brS=[0,b(e),jm,14,jm,68,[0,b(ax),[0,b(f),0]]],brY=[0,b(e),i7,5,i7,65,[0,b(ax),[0,b(f),0]]],brZ=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],brW=[0,b(e),i7,5,i7,65,[0,b(ax),[0,b(f),0]]],br2=[0,b(e),hU,14,hU,53,[0,b(ax),[0,b(f),0]]],br3=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],br0=[0,b(e),hU,14,hU,53,[0,b(ax),[0,b(f),0]]],br6=[0,b(e),jg,14,jg,62,[0,b(ax),[0,b(f),0]]],br7=[0,b(a4),[0,b("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],br4=[0,b(e),jg,14,jg,62,[0,b(ax),[0,b(f),0]]],br8=[0,b(a4),[0,b(zh),[0,b(cO),0]]],br9=[0,b(a4),[0,b(zh),[0,b(cO),0]]],bsa=[0,b(e),oo,12,oo,61,[0,b(ax),[0,b(f),0]]],br_=[0,b(e),oo,12,oo,61,[0,b(ax),[0,b(f),0]]],bsb=[0,b(a4),[0,b(kH),0]],bse=[0,b(e),nU,12,nU,23,[0,b(ax),[0,b(f),0]]],bsc=[0,b(e),nU,12,nU,23,[0,b(ax),[0,b(f),0]]],bsf=[0,b(a4),[0,b(n6),0]],bsr=[0,b(a4),[0,b(av),0]],bsD=[0,b(e),jf,12,jf,31,[0,b(ax),[0,b(f),0]]],bss=[0,b(e),jf,12,jf,31,[0,b(ax),[0,b(f),0]]],bsE=[0,b(a4),[0,b(cT),0]],bqB=[0,b(E),Bi,14,Bi,33,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bqx=[0,b(E),vO,14,vO,36,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bqy=[0,b(e),ka,12,ka,34,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bqw=[0,b(e),ka,12,ka,34,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bqt=[0,b(E),Ba,14,Ba,36,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bqm=[0,b(V),[0,b(av),[0,b(ai),0]]],bqn=[0,b(V),[0,b(av),0]],bqo=[0,b(V),[0,b(av),[0,b(ac),0]]],bqp=[0,b(V),[0,b(av),0]],bqb=[0,b(bg),[0,b(av),[0,b(ai),0]]],bqc=[0,b(bg),[0,b(av),0]],bqd=[0,b(bg),[0,b(av),[0,b(ac),0]]],bqe=[0,b(bg),[0,b(av),0]],bp3=[0,b(V),[0,b(av),[0,b(ai),0]]],bp4=[0,b(V),[0,b(av),0]],bp5=[0,b(V),[0,b(av),[0,b(ac),0]]],bp6=[0,b(V),[0,b(av),0]],bpU=[0,b(ao),[0,b(av),[0,b(ai),0]]],bpV=[0,b(ao),[0,b(av),0]],bpW=[0,b(ao),[0,b(av),[0,b(ac),0]]],bpX=[0,b(ao),[0,b(av),0]],bpJ=[0,b(bg),[0,b(av),[0,b(ai),0]]],bpK=[0,b(bg),[0,b(av),0]],bpL=[0,b(bg),[0,b(av),[0,b(ac),0]]],bpM=[0,b(bg),[0,b(av),0]],bpQ=b(o),bpR=b(o),bpG=[0,b(E),1539,16,1542,39,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bpH=[0,b(bg),[0,b(bm),[0,b(fc),0]]],bpI=[0,b(bg),[0,b(bm),0]],bpN=[0,b(E),1524,9,1545,10,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bpO=[0,b(bg),[0,b(bm),[0,b(ac),0]]],bpP=[0,b(bg),[0,b(bm),0]],bpS=[0,b(ao),[0,b(bm),[0,b(fc),0]]],bpT=[0,b(ao),[0,b(bm),0]],bpY=[0,b(E),1588,9,1599,10,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bpZ=[0,b(ao),[0,b(bm),[0,b(ac),0]]],bp0=[0,b(ao),[0,b(bm),0]],bp1=[0,b(V),[0,b(bm),[0,b(fc),0]]],bp2=[0,b(V),[0,b(bm),0]],bp7=[0,b(E),1609,10,1624,11,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bp8=[0,b(V),[0,b(bm),[0,b(ac),0]]],bp9=[0,b(V),[0,b(bm),0]],bqi=b(o),bqj=b(o),bp_=[0,b(E),1571,16,1574,39,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bp$=[0,b(bg),[0,b(bm),[0,b(fc),0]]],bqa=[0,b(bg),[0,b(bm),0]],bqf=[0,b(E),zq,9,1577,10,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bqg=[0,b(bg),[0,b(bm),[0,b(ac),0]]],bqh=[0,b(bg),[0,b(bm),0]],bqk=[0,b(V),[0,b(bm),[0,b(fc),0]]],bql=[0,b(V),[0,b(bm),0]],bqq=[0,b(E),1636,10,1651,11,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bqr=[0,b(V),[0,b(bm),[0,b(ac),0]]],bqs=[0,b(V),[0,b(bm),0]],bpC=[0,b(Q),88,14,88,44,[0,b(cD),[0,b(bT),[0,b(L),0]]]],bpw=[0,0],bpx=[1,0],bpy=[1,0],bpz=[1,0],bpA=[0,0],bpB=[1,0],bps=[0,b(E),AP,14,AP,31,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bpp=b(c3),bpq=b(B1),bpr=b(qV),bpl=[0,b(E),sj,14,sj,34,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bpm=[0,b(e),eC,11,eC,31,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpk=[0,b(e),eC,11,eC,31,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpn=[0,b(cN),[0,b(xB),0]],bpt=[0,b(e),mG,10,mG,22,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpo=[0,b(e),mG,10,mG,22,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpu=[0,b(cN),[0,b(w8),0]],bpD=[0,b(e),j0,11,j0,41,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpv=[0,b(e),j0,11,j0,41,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpE=[0,b(cN),[0,b(y2),0]],bqu=[0,b(e),nK,11,nK,33,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bpF=[0,b(e),nK,11,nK,33,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bqv=[0,b(cN),[0,b(Fd),0]],bqz=[0,b(cN),[0,b(av),0]],bqC=[0,b(e),nr,12,nr,31,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bqA=[0,b(e),nr,12,nr,31,[0,b(bM),[0,b(N),[0,b(A),[0,b(f),0]]]]],bqD=[0,b(cN),[0,b(cT),0]],bpf=[0,b(aG),vm,5,vm,73,[0,b("Article L841-3"),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bpe=[2,0],bpg=[0,b(e),eS,10,eS,16,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bpc=[0,b(aG),qr,5,1140,28,[0,b("Article L841-4"),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bpb=[0,0],bpd=[0,b(e),eS,10,eS,16,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bph=[0,b(e),eS,10,eS,16,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bpa=[0,b(aG),vq,14,vq,25,[0,b(dv),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bo8=[0,0],bo9=[0,0],bo_=[1,0],bo$=[2,0],boY=b(o),boZ=[0,b(aG),1002,5,ka,29,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bo0=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boT=b(z),boU=[0,b(aG),gG,5,990,13,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],boV=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boO=[0,b(aT),[0,b(fb),[0,b(ai),0]]],boP=[0,b(aT),[0,b(fb),0]],boQ=[0,b(aT),[0,b(fb),[0,b(ac),0]]],boR=[0,b(aT),[0,b(fb),0]],boN=b(z),boS=[0,b(aG),kt,5,kz,9,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],boW=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boX=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bo1=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boG=[2,0],boL=[0,0],boH=[0,b(cp),[0,b(dj),[0,b(ai),0]]],boI=[0,b(cp),[0,b(dj),0]],boJ=[0,b(cp),[0,b(dj),[0,b(ac),0]]],boK=[0,b(cp),[0,b(dj),0]],boF=b(o),boM=[0,b(aG),922,5,kC,29,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bo2=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boy=[2,0],boD=[0,0],boz=[0,b(cp),[0,b(dj),[0,b(ai),0]]],boA=[0,b(cp),[0,b(dj),0]],boB=[0,b(cp),[0,b(dj),[0,b(ac),0]]],boC=[0,b(cp),[0,b(dj),0]],box=b(z),boE=[0,b(aG),890,5,gx,8,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bo3=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bos=[4,0],bot=[3,0],bou=[1,0],bov=[0,0],bow=[0,b(aG),870,5,kQ,6,[0,b(ih),[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bo4=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bor=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bon=[0,b(aG),xk,14,xk,25,[0,b(bi),[0,b(b4),[0,b(x),[0,b(aa),[0,b(w),0]]]]]],bol=[0,0],bom=[2,0],boh=[0,b(e),ya,14,ya,56,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bod=[0,b(e),yV,14,yV,63,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bn9=[0,b(E),mU,9,mU,55,[0,b(oc),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bn_=[0,b(E),mU,9,mU,55,[0,b(oc),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bn$=[0,b(b8),[0,b("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],bn6=[0,b(E),nd,9,nd,68,[0,b(oc),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bn7=[0,b(E),nd,9,nd,68,[0,b(oc),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bn8=[0,b(b8),[0,b("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bn3=[0,b(e),gM,14,gM,47,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnZ=[0,b(e),gp,14,gp,43,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnV=[0,b(e),i2,14,i2,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnM=[0,b(E),4364,5,4369,28,[0,b(oD),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bnN=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnL=[0,b(E),4347,5,4352,28,[0,b(oD),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bnO=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnK=[0,b(E),4330,5,4337,28,[0,b(oD),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bnP=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnQ=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnJ=[0,b(E),4300,5,4302,28,[0,b(oD),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bnR=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnI=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnC=[0,b(e),iA,14,iA,46,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnB=[6,0],bnx=[0,b(e),fK,14,fK,56,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnw=[1,0],bns=[0,b(e),jo,14,jo,50,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bno=[0,b(E),rP,14,rP,28,[0,b("Article D841-1"),[0,b("Chapitre 1 : Champ d'application"),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]],bnp=[0,b(e),nO,11,nO,25,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnn=[0,b(e),nO,11,nO,25,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnq=[0,b(b8),[0,b("dur\xc3\xa9e_l841_1_3"),0]],bnt=[0,b(e),jo,14,jo,50,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnu=[0,b(b8),[0,b(w2),0]],bnr=[0,b(e),jo,14,jo,50,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bny=[0,b(e),fK,14,fK,56,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnz=[0,b(b8),[0,b(Bk),0]],bnv=[0,b(e),fK,14,fK,56,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnD=[0,b(e),iA,14,iA,46,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnE=[0,b(b8),[0,b(yT),0]],bnA=[0,b(e),iA,14,iA,46,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnF=[0,b(b8),[0,b(oK),[0,b(cp),0]]],bnG=[0,b(b8),[0,b(oK),[0,b(cp),0]]],bnS=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnH=[0,b(e),cM,11,cM,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnT=[0,b(b8),[0,b("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],bnW=[0,b(e),i2,14,i2,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bnX=[0,b(b8),[0,b(vv),0]],bnU=[0,b(e),i2,14,i2,40,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bn0=[0,b(e),gp,14,gp,43,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bn1=[0,b(b8),[0,b(Bh),0]],bnY=[0,b(e),gp,14,gp,43,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bn4=[0,b(e),gM,14,gM,47,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bn5=[0,b(b8),[0,b(F3),0]],bn2=[0,b(e),gM,14,gM,47,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boa=[0,b(b8),[0,b(oB),[0,b(aT),0]]],bob=[0,b(b8),[0,b(oB),[0,b(aT),0]]],boe=[0,b(e),ku,12,ku,61,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boc=[0,b(e),ku,12,ku,61,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bof=[0,b(b8),[0,b(kH),0]],boi=[0,b(e),fY,12,fY,54,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bog=[0,b(e),fY,12,fY,54,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boj=[0,b(b8),[0,b(r3),0]],boo=[0,b(e),n3,10,n3,31,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bok=[0,b(e),n3,10,n3,31,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bop=[0,b(b8),[0,b("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bo5=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],boq=[0,b(e),b2,11,b2,52,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bo6=[0,b(b8),[0,b("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpi=[0,b(e),eS,10,eS,16,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bo7=[0,b(e),eS,10,eS,16,[0,b(aJ),[0,b(i),[0,b(f),0]]]],bpj=[0,b(b8),[0,b("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bnj=[0,b(aG),591,5,kI,36,[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]],bnk=[0,b(e),fB,12,fB,23,[0,b(aX),[0,b(i),[0,b(f),0]]]],bni=[0,b(e),fB,12,fB,23,[0,b(aX),[0,b(i),[0,b(f),0]]]],bne=[0,b(e),od,14,od,56,[0,b(aX),[0,b(i),[0,b(f),0]]]],bna=[0,b(e),Fv,14,Fv,63,[0,b(aX),[0,b(i),[0,b(f),0]]]],bm2=[0,b(E),3693,5,3698,30,[0,b("Article R832-21"),[0,b("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],bm3=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmY=[0,b(b3),[0,b(ki),[0,b(ai),0]]],bmZ=[0,b(b3),[0,b(ki),0]],bm0=[0,b(b3),[0,b(ki),[0,b(ac),0]]],bm1=[0,b(b3),[0,b(ki),0]],bmX=[0,b(aG),kX,5,kd,30,[0,b(mh),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bm4=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmW=[0,b(aG),gD,5,687,30,[0,b(mh),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bm5=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmV=[0,b(aG),gz,5,650,30,[0,b(mh),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bm6=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmR=[0,b(b3),[0,b(j1),[0,b(ai),0]]],bmS=[0,b(b3),[0,b(j1),0]],bmT=[0,b(b3),[0,b(j1),[0,b(ac),0]]],bmU=[0,b(b3),[0,b(j1),0]],bmQ=[0,b(aG),gB,5,k0,30,[0,b(mh),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bm7=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bm8=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmP=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmJ=[0,b(e),iM,14,iM,47,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmF=[0,b(e),gI,14,gI,43,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmB=[0,b(e),hd,14,hd,40,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmu=[0,b(aG),ko,5,753,30,[0,b(qB),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bmv=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmt=[0,b(aG),kP,5,726,30,[0,b(qB),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bmw=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bms=[0,b(aG),vJ,31,vJ,54,[0,b(qB),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bmx=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmr=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmn=[0,b(e),h_,11,h_,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmo=[0,b(e),h_,11,h_,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmm=[0,b(e),h_,11,h_,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmg=[0,b(E),3021,5,3024,41,[0,b("Article R832-7"),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bmh=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmf=[0,b(E),2986,5,2988,42,[0,b("Article R832-5"),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bmi=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmj=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bme=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmk=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmd=[0,b(e),c0,11,c0,41,[0,b(aX),[0,b(i),[0,b(f),0]]]],bml=[0,b(b3),[0,b(j1),0]],bmp=[0,b(b3),[0,b(ki),0]],bmy=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmq=[0,b(e),dl,11,dl,34,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmz=[0,b(b3),[0,b("condition_logement_pr\xc3\xaat"),0]],bmC=[0,b(e),hd,14,hd,40,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmD=[0,b(b3),[0,b(vv),0]],bmA=[0,b(e),hd,14,hd,40,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmG=[0,b(e),gI,14,gI,43,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmH=[0,b(b3),[0,b(Bh),0]],bmE=[0,b(e),gI,14,gI,43,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmK=[0,b(e),iM,14,iM,47,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmL=[0,b(b3),[0,b(F3),0]],bmI=[0,b(e),iM,14,iM,47,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmM=[0,b(b3),[0,b(oB),[0,b(aT),0]]],bmN=[0,b(b3),[0,b(oB),[0,b(aT),0]]],bm9=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bmO=[0,b(e),cy,11,cy,38,[0,b(aX),[0,b(i),[0,b(f),0]]]],bm_=[0,b(b3),[0,b("condition_logement_bailleur"),0]],bnb=[0,b(e),ma,12,ma,61,[0,b(aX),[0,b(i),[0,b(f),0]]]],bm$=[0,b(e),ma,12,ma,61,[0,b(aX),[0,b(i),[0,b(f),0]]]],bnc=[0,b(b3),[0,b(kH),0]],bnf=[0,b(e),n4,12,n4,54,[0,b(aX),[0,b(i),[0,b(f),0]]]],bnd=[0,b(e),n4,12,n4,54,[0,b(aX),[0,b(i),[0,b(f),0]]]],bng=[0,b(b3),[0,b(r3),0]],bnl=[0,b(e),fB,12,fB,23,[0,b(aX),[0,b(i),[0,b(f),0]]]],bnh=[0,b(e),fB,12,fB,23,[0,b(aX),[0,b(i),[0,b(f),0]]]],bnm=[0,b(b3),[0,b(n6),0]],bma=[0,b(E),AQ,14,AQ,40,[0,b("Article D823-22"),[0,b(mb),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bl7=[0,b(aG),aw,5,kE,42,[0,b("Article L823-8"),[0,b(a2),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],bl8=[0,b(e),f0,11,f0,31,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl6=[0,b(e),f0,11,f0,31,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl2=[0,b(Q),BF,14,BF,29,[0,b("Article 45"),[0,b("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,b(L),0]]]],blX=b(_),blY=b(qt),blZ=b(_),bl1=b(o),bl0=b("2.4"),blS=[0,b(E),2069,6,2079,75,[0,b(qJ),[0,b(mb),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],blT=[0,b(e),f5,11,f5,41,[0,b(bu),[0,b(i),[0,b(f),0]]]],blR=[0,b(e),f5,11,f5,41,[0,b(bu),[0,b(i),[0,b(f),0]]]],blL=[0,b(e),ji,14,ji,43,[0,b(bu),[0,b(i),[0,b(f),0]]]],blH=[0,b(e),iF,14,iF,39,[0,b(bu),[0,b(i),[0,b(f),0]]]],blD=[0,b(e),iI,14,iI,36,[0,b(bu),[0,b(i),[0,b(f),0]]]],blx=[0,b(e),ha,14,ha,65,[0,b(bu),[0,b(i),[0,b(f),0]]]],blr=b(_),bls=[0,b(E),2060,5,2065,77,[0,b(qJ),[0,b(mb),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],blt=[0,b(e),er,11,er,32,[0,b(bu),[0,b(i),[0,b(f),0]]]],blq=[0,b(e),er,11,er,32,[0,b(bu),[0,b(i),[0,b(f),0]]]],blm=[0,b(E),Ai,14,Ai,47,[0,b(qJ),[0,b(mb),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bln=[0,b(e),mK,11,mK,44,[0,b(bu),[0,b(i),[0,b(f),0]]]],bll=[0,b(e),mK,11,mK,44,[0,b(bu),[0,b(i),[0,b(f),0]]]],blo=[0,b(dm),[0,b("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],blu=[0,b(e),er,11,er,32,[0,b(bu),[0,b(i),[0,b(f),0]]]],blp=[0,b(e),er,11,er,32,[0,b(bu),[0,b(i),[0,b(f),0]]]],blv=[0,b(dm),[0,b("condition_rang_enfant"),0]],bly=[0,b(e),ha,14,ha,65,[0,b(bu),[0,b(i),[0,b(f),0]]]],blz=[0,b(dm),[0,b(DQ),0]],blw=[0,b(e),ha,14,ha,65,[0,b(bu),[0,b(i),[0,b(f),0]]]],blA=[0,b(dm),[0,b(mS),[0,b(f4),0]]],blB=[0,b(dm),[0,b(mS),[0,b(f4),0]]],blE=[0,b(e),iI,14,iI,36,[0,b(bu),[0,b(i),[0,b(f),0]]]],blF=[0,b(dm),[0,b("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],blC=[0,b(e),iI,14,iI,36,[0,b(bu),[0,b(i),[0,b(f),0]]]],blI=[0,b(e),iF,14,iF,39,[0,b(bu),[0,b(i),[0,b(f),0]]]],blJ=[0,b(dm),[0,b("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],blG=[0,b(e),iF,14,iF,39,[0,b(bu),[0,b(i),[0,b(f),0]]]],blM=[0,b(e),ji,14,ji,43,[0,b(bu),[0,b(i),[0,b(f),0]]]],blN=[0,b(dm),[0,b("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],blK=[0,b(e),ji,14,ji,43,[0,b(bu),[0,b(i),[0,b(f),0]]]],blO=[0,b(dm),[0,b(A4),[0,b(aT),0]]],blP=[0,b(dm),[0,b(A4),[0,b(aT),0]]],blU=[0,b(e),f5,11,f5,41,[0,b(bu),[0,b(i),[0,b(f),0]]]],blQ=[0,b(e),f5,11,f5,41,[0,b(bu),[0,b(i),[0,b(f),0]]]],blV=[0,b(dm),[0,b("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bl3=[0,b(e),ns,11,ns,26,[0,b(bu),[0,b(i),[0,b(f),0]]]],blW=[0,b(e),ns,11,ns,26,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl4=[0,b(dm),[0,b("plafond_d823_22"),0]],bl9=[0,b(e),f0,11,f0,31,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl5=[0,b(e),f0,11,f0,31,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl_=[0,b(dm),[0,b(A_),0]],bmb=[0,b(e),m7,12,m7,38,[0,b(bu),[0,b(i),[0,b(f),0]]]],bl$=[0,b(e),m7,12,m7,38,[0,b(bu),[0,b(i),[0,b(f),0]]]],bmc=[0,b(dm),[0,b("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blh=[0,b(E),qW,14,qW,33,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bld=[0,b(E),Ej,14,Ej,36,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ble=[0,b(e),kf,12,kf,34,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],blc=[0,b(e),kf,12,kf,34,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bk$=[0,b(E),vG,14,vG,36,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bk4=[0,b(at),[0,b(av),[0,b(ai),0]]],bk5=[0,b(at),[0,b(av),0]],bk6=[0,b(at),[0,b(av),[0,b(ac),0]]],bk7=[0,b(at),[0,b(av),0]],bkV=[0,b(aj),[0,b(av),[0,b(ai),0]]],bkW=[0,b(aj),[0,b(av),0]],bkX=[0,b(aj),[0,b(av),[0,b(ac),0]]],bkY=[0,b(aj),[0,b(av),0]],bkK=[0,b(aC),[0,b(av),[0,b(ai),0]]],bkL=[0,b(aC),[0,b(av),0]],bkM=[0,b(aC),[0,b(av),[0,b(ac),0]]],bkN=[0,b(aC),[0,b(av),0]],bkR=b(o),bkS=b(o),bkH=[0,b(E),1455,16,1458,39,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bkI=[0,b(aC),[0,b(bm),[0,b(fc),0]]],bkJ=[0,b(aC),[0,b(bm),0]],bkO=[0,b(E),1440,9,1460,10,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bkP=[0,b(aC),[0,b(bm),[0,b(ac),0]]],bkQ=[0,b(aC),[0,b(bm),0]],bkT=[0,b(aj),[0,b(bm),[0,b(fc),0]]],bkU=[0,b(aj),[0,b(bm),0]],bkZ=[0,b(E),1491,10,1507,11,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bk0=[0,b(aj),[0,b(bm),[0,b(ac),0]]],bk1=[0,b(aj),[0,b(bm),0]],bk2=[0,b(at),[0,b(bm),[0,b(fc),0]]],bk3=[0,b(at),[0,b(bm),0]],bk8=[0,b(E),1471,9,1480,10,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bk9=[0,b(at),[0,b(bm),[0,b(ac),0]]],bk_=[0,b(at),[0,b(bm),0]],bkD=[0,b(Q),78,14,78,44,[0,b(cD),[0,b(bT),[0,b(L),0]]]],bkx=[0,0],bky=[1,0],bkz=[1,0],bkA=[1,0],bkB=[0,0],bkC=[1,0],bkt=[0,b(E),Af,14,Af,31,[0,b(rL),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],bkq=b(c3),bkr=b(B1),bks=b(qV),bkm=[0,b(E),zs,14,zs,34,[0,b(co),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bkn=[0,b(e),j3,11,j3,31,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkl=[0,b(e),j3,11,j3,31,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bko=[0,b(cO),[0,b(xB),0]],bku=[0,b(e),ko,10,ko,22,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkp=[0,b(e),ko,10,ko,22,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkv=[0,b(cO),[0,b(w8),0]],bkE=[0,b(e),j_,11,j_,41,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkw=[0,b(e),j_,11,j_,41,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkF=[0,b(cO),[0,b(y2),0]],bla=[0,b(e),lU,11,lU,33,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],bkG=[0,b(e),lU,11,lU,33,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],blb=[0,b(cO),[0,b(Fd),0]],blf=[0,b(cO),[0,b(av),0]],bli=[0,b(e),ni,12,ni,31,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],blg=[0,b(e),ni,12,ni,31,[0,b(bM),[0,b(t),[0,b(i),[0,b(f),0]]]]],blj=[0,b(cO),[0,b(cT),0]],bki=[0,b(E),Ek,14,Ek,36,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bkd=[0,b(V),[0,b(bI),[0,b(ai),0]]],bke=[0,b(V),[0,b(bI),0]],bkf=[0,b(V),[0,b(bI),[0,b(ac),0]]],bkg=[0,b(V),[0,b(bI),0]],bkh=b(o),bkj=[0,b(e),km,10,km,25,[0,b(D),[0,b(A),[0,b(f),0]]]],bkc=[0,b(e),km,10,km,25,[0,b(D),[0,b(A),[0,b(f),0]]]],bj$=[0,b(E),EF,14,EF,36,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bj0=[0,b(V),[0,b(em),[0,b(ai),0]]],bj1=[0,b(V),[0,b(em),0]],bj2=[0,b(V),[0,b(em),[0,b(ac),0]]],bj3=[0,b(V),[0,b(em),0]],bj4=[0,b(bj),[0,b(bO),[0,b(ai),0]]],bj5=[0,b(bj),[0,b(bO),0]],bj6=[0,b(bj),[0,b(bO),[0,b(ac),0]]],bj7=[0,b(bj),[0,b(bO),0]],bj8=b(k2),bj9=b(o),bj_=b(o),bka=[0,b(e),nG,10,nG,40,[0,b(D),[0,b(A),[0,b(f),0]]]],bjZ=[0,b(e),nG,10,nG,40,[0,b(D),[0,b(A),[0,b(f),0]]]],bjW=[0,b(E),yZ,14,yZ,36,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjN=[0,b(V),[0,b(bH),[0,b(ai),0]]],bjO=[0,b(V),[0,b(bH),0]],bjP=[0,b(V),[0,b(bH),[0,b(ac),0]]],bjQ=[0,b(V),[0,b(bH),0]],bjR=[0,b(V),[0,b(eD),[0,b(ai),0]]],bjS=[0,b(V),[0,b(eD),0]],bjT=[0,b(V),[0,b(eD),[0,b(ac),0]]],bjU=[0,b(V),[0,b(eD),0]],bjV=b(o),bjX=[0,b(e),nP,10,nP,32,[0,b(D),[0,b(A),[0,b(f),0]]]],bjM=[0,b(e),nP,10,nP,32,[0,b(D),[0,b(A),[0,b(f),0]]]],bjJ=[0,b(E),AB,14,AB,33,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjF=[0,b(E),Em,14,Em,47,[0,b(oM),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjA=[0,b(V),[0,b(df),[0,b(ai),0]]],bjB=[0,b(V),[0,b(df),0]],bjC=[0,b(V),[0,b(df),[0,b(ac),0]]],bjD=[0,b(V),[0,b(df),0]],bjE=b(o),bjG=[0,b(e),mH,11,mH,44,[0,b(D),[0,b(A),[0,b(f),0]]]],bjz=[0,b(e),mH,11,mH,44,[0,b(D),[0,b(A),[0,b(f),0]]]],bjw=[0,b(E),w6,14,w6,41,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjs=[0,b(E),AI,14,AI,33,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjo=[0,b(E),xS,14,xS,33,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjj=[0,b(E),4672,7,4675,44,[0,b(oM),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjk=[0,b(e),hn,11,hn,47,[0,b(D),[0,b(A),[0,b(f),0]]]],bji=[0,b(E),wM,14,wM,50,[0,b(oM),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjc=[0,b(E),nn,14,nn,62,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjd=[0,b(E),nn,14,nn,62,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bje=[0,b(V),[0,b("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bi$=[0,b(E),m3,14,m3,61,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bja=[0,b(E),m3,14,m3,61,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bjb=[0,b(V),[0,b(Ed),0]],bi8=[0,b(e),iN,14,iN,49,[0,b(D),[0,b(A),[0,b(f),0]]]],bi7=b(o),bi3=[0,b(e),iQ,14,iQ,53,[0,b(D),[0,b(A),[0,b(f),0]]]],biZ=[0,b(e),hp,14,hp,44,[0,b(D),[0,b(A),[0,b(f),0]]]],biV=[0,b(e),hZ,14,hZ,70,[0,b(D),[0,b(A),[0,b(f),0]]]],biR=[0,b(e),gx,14,gx,65,[0,b(D),[0,b(A),[0,b(f),0]]]],biN=[0,b(e),hy,14,hy,67,[0,b(D),[0,b(A),[0,b(f),0]]]],biJ=[0,b(e),hP,14,hP,61,[0,b(D),[0,b(A),[0,b(f),0]]]],biF=[0,b(e),iT,14,iT,59,[0,b(D),[0,b(A),[0,b(f),0]]]],biE=[3,0],biy=[0,b(E),ht,14,ht,70,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biu=[0,b(E),hH,14,hH,69,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biq=[0,b(E),jp,14,jp,75,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bil=[0,b(E),A9,5,A9,44,[0,b(BK),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bid=[0,b(V),[0,b(dC),[0,b(ai),0]]],bie=[0,b(V),[0,b(dC),0]],bif=[0,b(V),[0,b(dC),[0,b(ac),0]]],big=[0,b(V),[0,b(dC),0]],bih=[0,b(V),[0,b(dC),[0,b(ai),0]]],bii=[0,b(V),[0,b(dC),0]],bij=[0,b(V),[0,b(dC),[0,b(ac),0]]],bik=[0,b(V),[0,b(dC),0]],bim=[0,b(e),hM,11,hM,36,[0,b(D),[0,b(A),[0,b(f),0]]]],bic=[0,b(E),EB,14,EB,39,[0,b(BK),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bh_=[0,b(V),[0,b(dC),[0,b(ai),0]]],bh$=[0,b(V),[0,b(dC),0]],bia=[0,b(V),[0,b(dC),[0,b(ac),0]]],bib=[0,b(V),[0,b(dC),0]],bh5=[0,b(E),wi,5,wi,28,[0,b(nc),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bh6=[0,b(e),hz,10,hz,15,[0,b(D),[0,b(A),[0,b(f),0]]]],bh4=[0,b(E),Fb,14,Fb,41,[0,b(nc),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bh1=b(c3),bh2=b(qV),bh3=b("4999"),bhU=[0,b(aN),xz,24,xz,56,[0,b(ol),[0,b(bA),[0,b(aL),0]]]],bhL=b(dh),bhM=[0,b(V),[0,b(b7),[0,b(ai),0]]],bhN=[0,b(V),[0,b(b7),0]],bhO=[0,b(V),[0,b(b7),[0,b(ac),0]]],bhP=[0,b(V),[0,b(b7),0]],bhQ=[0,b(V),[0,b(b7),[0,b(ai),0]]],bhR=[0,b(V),[0,b(b7),0]],bhS=[0,b(V),[0,b(b7),[0,b(ac),0]]],bhT=[0,b(V),[0,b(b7),0]],bhV=[0,b(e),et,10,et,26,[0,b(D),[0,b(A),[0,b(f),0]]]],bhK=[0,b(Q),Ep,24,Ep,56,[0,b(ol),[0,b(bl),[0,b(L),0]]]],bhB=b(dh),bhC=[0,b(V),[0,b(b7),[0,b(ai),0]]],bhD=[0,b(V),[0,b(b7),0]],bhE=[0,b(V),[0,b(b7),[0,b(ac),0]]],bhF=[0,b(V),[0,b(b7),0]],bhG=[0,b(V),[0,b(b7),[0,b(ai),0]]],bhH=[0,b(V),[0,b(b7),0]],bhI=[0,b(V),[0,b(b7),[0,b(ac),0]]],bhJ=[0,b(V),[0,b(b7),0]],bhW=[0,b(e),et,10,et,26,[0,b(D),[0,b(A),[0,b(f),0]]]],bhX=[0,b(e),et,10,et,26,[0,b(D),[0,b(A),[0,b(f),0]]]],bhA=[0,b(Q),AA,14,AA,46,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bhw=[0,b(V),[0,b(b7),[0,b(ai),0]]],bhx=[0,b(V),[0,b(b7),0]],bhy=[0,b(V),[0,b(b7),[0,b(ac),0]]],bhz=[0,b(V),[0,b(b7),0]],bhY=[0,b(e),et,10,et,26,[0,b(D),[0,b(A),[0,b(f),0]]]],bhv=[0,b(e),et,10,et,26,[0,b(D),[0,b(A),[0,b(f),0]]]],bhs=[0,b(E),At,15,At,37,[0,b(oM),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bht=[0,b(e),n7,11,n7,33,[0,b(D),[0,b(A),[0,b(f),0]]]],bhr=[0,b(e),n7,11,n7,33,[0,b(D),[0,b(A),[0,b(f),0]]]],bhn=[0,b(E),4697,6,4703,6,[0,b(nc),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bho=[0,b(e),fV,11,fV,42,[0,b(D),[0,b(A),[0,b(f),0]]]],bhl=[0,b(E),4715,5,4716,59,[0,b(nc),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bhm=[0,b(e),fV,11,fV,42,[0,b(D),[0,b(A),[0,b(f),0]]]],bhg=[0,b(Q),Eu,5,Eu,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bgw=b(o),bgx=b("158700"),bgy=b("191300"),bgz=b(z),bgA=b("205500"),bgB=b(X),bgC=b("211300"),bgD=b(_),bgE=b("217100"),bgF=b(ag),bgG=b("222900"),bgH=b(P),bgI=b(z6),bgJ=b(P),bgK=b("19800"),bgL=b(z6),bgM=b(o),bgN=b("139300"),bgO=b("170600"),bgP=b(z),bgQ=b("184700"),bgR=b(X),bgS=b("191200"),bgT=b(_),bgU=b(zj),bgV=b(ag),bgW=b("204200"),bgX=b(P),bgY=b(wr),bgZ=b(P),bg0=b(sf),bg1=b(wr),bg2=b(o),bg3=b("130600"),bg4=b("158400"),bg5=b(z),bg6=b("172600"),bg7=b(X),bg8=b(DS),bg9=b(_),bg_=b("187000"),bg$=b(ag),bha=b("194200"),bhb=b(P),bhc=b(rD),bhd=b(P),bhe=b("18200"),bhf=b(rD),bhh=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bgu=[0,b(Q),xV,5,xV,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bfK=b(o),bfL=b("160400"),bfM=b("193400"),bfN=b(z),bfO=b("207800"),bfP=b(X),bfQ=b("213700"),bfR=b(_),bfS=b("219600"),bfT=b(ag),bfU=b(yB),bfV=b(P),bfW=b(n$),bfX=b(P),bfY=b("20000"),bfZ=b(n$),bf0=b(o),bf1=b(DD),bf2=b(DT),bf3=b(z),bf4=b("186700"),bf5=b(X),bf6=b("193300"),bf7=b(_),bf8=b(qX),bf9=b(ag),bf_=b("206500"),bf$=b(P),bga=b(wT),bgb=b(P),bgc=b(zm),bgd=b(wT),bge=b(o),bgf=b(Bn),bgg=b(q_),bgh=b(z),bgi=b("174500"),bgj=b(X),bgk=b(xE),bgl=b(_),bgm=b("189100"),bgn=b(ag),bgo=b("196400"),bgp=b(P),bgq=b(vb),bgr=b(P),bgs=b("18400"),bgt=b(vb),bgv=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bfI=[0,b(Q),CU,5,CU,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],beY=b(o),beZ=b("163300"),be0=b("196900"),be1=b(z),be2=b("211600"),be3=b(X),be4=b(wt),be5=b(_),be6=b("223600"),be7=b(ag),be8=b("229600"),be9=b(P),be_=b(BC),be$=b(P),bfa=b("20400"),bfb=b(BC),bfc=b(o),bfd=b("143300"),bfe=b("175600"),bff=b(z),bfg=b("190100"),bfh=b(X),bfi=b("196600"),bfj=b(_),bfk=b("203500"),bfl=b(ag),bfm=b("210200"),bfn=b(P),bfo=b(EQ),bfp=b(P),bfq=b("19600"),bfr=b(EQ),bfs=b(o),bft=b("134400"),bfu=b(xI),bfv=b(z),bfw=b("177700"),bfx=b(X),bfy=b("185100"),bfz=b(_),bfA=b(wu),bfB=b(ag),bfC=b(qX),bfD=b(P),bfE=b(FL),bfF=b(P),bfG=b("18700"),bfH=b(FL),bfJ=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],beW=[0,b(Q),Ev,5,Ev,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bea=b(o),beb=b("167200"),bec=b("201600"),bed=b(z),bee=b("216700"),bef=b(X),beg=b("222800"),beh=b(_),bei=b("229000"),bej=b(ag),bek=b("235100"),bel=b(P),bem=b(FF),ben=b(P),beo=b(vB),bep=b(FF),beq=b(o),ber=b("146700"),bes=b(DS),bet=b(z),beu=b("194700"),bev=b(X),bew=b("201500"),bex=b(_),bey=b("208400"),bez=b(ag),beA=b("215200"),beB=b(P),beC=b(n$),beD=b(P),beE=b(Bx),beF=b(n$),beG=b(o),beH=b("137600"),beI=b("166900"),beJ=b(z),beK=b("182000"),beL=b(X),beM=b("189500"),beN=b(_),beO=b("197100"),beP=b(ag),beQ=b(C1),beR=b(P),beS=b(Bc),beT=b(P),beU=b(sf),beV=b(Bc),beX=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bd_=[0,b(Q),Aw,5,Aw,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bdo=b(o),bdp=b("167400"),bdq=b("201800"),bdr=b(z),bds=b("216900"),bdt=b(X),bdu=b("223000"),bdv=b(_),bdw=b("229200"),bdx=b(ag),bdy=b("235300"),bdz=b(P),bdA=b(Ar),bdB=b(P),bdC=b(vB),bdD=b(Ar),bdE=b(o),bdF=b("146800"),bdG=b("180000"),bdH=b(z),bdI=b("194900"),bdJ=b(X),bdK=b(Fa),bdL=b(_),bdM=b(rD),bdN=b(ag),bdO=b("215400"),bdP=b(P),bdQ=b(Cn),bdR=b(P),bdS=b(Bx),bdT=b(Cn),bdU=b(o),bdV=b("137700"),bdW=b("167100"),bdX=b(z),bdY=b("182200"),bdZ=b(X),bd0=b("189700"),bd1=b(_),bd2=b("197300"),bd3=b(ag),bd4=b("204900"),bd5=b(P),bd6=b(DP),bd7=b(P),bd8=b(sf),bd9=b(DP),bd$=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bdm=[0,b(Q),zp,5,zp,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bcC=b(o),bcD=b("169100"),bcE=b("203800"),bcF=b(z),bcG=b("219100"),bcH=b(X),bcI=b("225200"),bcJ=b(_),bcK=b("231500"),bcL=b(ag),bcM=b("237700"),bcN=b(P),bcO=b(mm),bcP=b(P),bcQ=b("21100"),bcR=b(mm),bcS=b(o),bcT=b("148300"),bcU=b(xE),bcV=b(z),bcW=b("196800"),bcX=b(X),bcY=b("203700"),bcZ=b(_),bc0=b("210700"),bc1=b(ag),bc2=b(wt),bc3=b(P),bc4=b(wX),bc5=b(P),bc6=b("20300"),bc7=b(wX),bc8=b(o),bc9=b("139100"),bc_=b("168800"),bc$=b(z),bda=b(rE),bdb=b(X),bdc=b("191600"),bdd=b(_),bde=b("199300"),bdf=b(ag),bdg=b("206900"),bdh=b(P),bdi=b(AU),bdj=b(P),bdk=b(zm),bdl=b(AU),bdn=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bcA=[0,b(Q),BJ,5,BJ,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bbQ=b(o),bbR=b("171100"),bbS=b("206200"),bbT=b(z),bbU=b("221700"),bbV=b(X),bbW=b("227900"),bbX=b(_),bbY=b("234300"),bbZ=b(ag),bb0=b("240600"),bb1=b(P),bb2=b(zV),bb3=b(P),bb4=b("21400"),bb5=b(zV),bb6=b(o),bb7=b("150100"),bb8=b(rE),bb9=b(z),bb_=b("199200"),bb$=b(X),bca=b("206100"),bcb=b(_),bcc=b("213200"),bcd=b(ag),bce=b("220200"),bcf=b(P),bcg=b(y4),bch=b(P),bci=b("20500"),bcj=b(y4),bck=b(o),bcl=b(DD),bcm=b("170800"),bcn=b(z),bco=b("186200"),bcp=b(X),bcq=b("193900"),bcr=b(_),bcs=b(Fa),bct=b(ag),bcu=b("209400"),bcv=b(P),bcw=b(AT),bcx=b(P),bcy=b("19500"),bcz=b(AT),bcB=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bbO=[0,b(Q),Av,5,Av,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],ba4=b(o),ba5=b("26084"),ba6=b("31435"),ba7=b(z),ba8=b("33798"),ba9=b(X),ba_=b("34743"),ba$=b(_),bba=b("35719"),bbb=b(ag),bbc=b("36679"),bbd=b(P),bbe=b(y_),bbf=b(P),bbg=b("3262"),bbh=b(y_),bbi=b(o),bbj=b("22883"),bbk=b("28051"),bbl=b(z),bbm=b("30368"),bbn=b(X),bbo=b("31420"),bbp=b(_),bbq=b("32502"),bbr=b(ag),bbs=b("33569"),bbt=b(P),bbu=b(Fs),bbv=b(P),bbw=b("3125"),bbx=b(Fs),bby=b(o),bbz=b("21465"),bbA=b("26038"),bbB=b(z),bbC=b("28386"),bbD=b(X),bbE=b("29560"),bbF=b(_),bbG=b("30749"),bbH=b(ag),bbI=b("31923"),bbJ=b(P),bbK=b(ES),bbL=b(P),bbM=b("2973"),bbN=b(ES),bbP=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],ba2=[0,b(Q),C9,5,C9,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],bag=b(o),bah=b("26397"),bai=b("31812"),baj=b(z),bak=b("34204"),bal=b(X),bam=b("35160"),ban=b(_),bao=b("36148"),bap=b(ag),baq=b("37119"),bar=b(P),bas=b(zy),bat=b(P),bau=b("3301"),bav=b(zy),baw=b(o),bax=b("23158"),bay=b("28388"),baz=b(z),baA=b("30732"),baB=b(X),baC=b(mW),baD=b(_),baE=b("32892"),baF=b(ag),baG=b("33972"),baH=b(P),baI=b(ED),baJ=b(P),baK=b("3163"),baL=b(ED),baM=b(o),baN=b("21723"),baO=b("26350"),baP=b(z),baQ=b("28727"),baR=b(X),baS=b("29915"),baT=b(_),baU=b("31118"),baV=b(ag),baW=b("32306"),baX=b(P),baY=b(xh),baZ=b(P),ba0=b("3009"),ba1=b(xh),ba3=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bae=[0,b(Q),zv,5,zv,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a$u=b(o),a$v=b(Gb),a$w=b("32194"),a$x=b(z),a$y=b("34614"),a$z=b(X),a$A=b("35582"),a$B=b(_),a$C=b("36582"),a$D=b(ag),a$E=b("37564"),a$F=b(P),a$G=b(wI),a$H=b(P),a$I=b("3341"),a$J=b(wI),a$K=b(o),a$L=b("23436"),a$M=b("28729"),a$N=b(z),a$O=b("31101"),a$P=b(X),a$Q=b("32179"),a$R=b(_),a$S=b("33287"),a$T=b(ag),a$U=b("34380"),a$V=b(P),a$W=b(AS),a$X=b(P),a$Y=b("3201"),a$Z=b(AS),a$0=b(o),a$1=b("21984"),a$2=b("26666"),a$3=b(z),a$4=b("29072"),a$5=b(X),a$6=b("30274"),a$7=b(_),a$8=b("31491"),a$9=b(ag),a$_=b("32694"),a$$=b(P),baa=b(BI),bab=b(P),bac=b("3045"),bad=b(BI),baf=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a$s=[0,b(Q),yW,5,yW,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a_I=b(o),a_J=b("27195"),a_K=b("32773"),a_L=b(z),a_M=b("35237"),a_N=b(X),a_O=b("36222"),a_P=b(_),a_Q=b("37240"),a_R=b(ag),a_S=b("38240"),a_T=b(P),a_U=b(BA),a_V=b(P),a_W=b("3401"),a_X=b(BA),a_Y=b(o),a_Z=b("23858"),a_0=b("29246"),a_1=b(z),a_2=b("31661"),a_3=b(X),a_4=b("32758"),a_5=b(_),a_6=b("33886"),a_7=b(ag),a_8=b("34999"),a_9=b(P),a__=b(zC),a_$=b(P),a$a=b("3259"),a$b=b(zC),a$c=b(o),a$d=b("22380"),a$e=b("27146"),a$f=b(z),a$g=b("29595"),a$h=b(X),a$i=b("30819"),a$j=b(_),a$k=b("32058"),a$l=b(ag),a$m=b("33282"),a$n=b(P),a$o=b(AG),a$p=b(P),a$q=b("3100"),a$r=b(AG),a$t=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a_G=[0,b(Q),wD,5,wD,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a9W=b(o),a9X=b("27956"),a9Y=b("33691"),a9Z=b(z),a90=b("36224"),a91=b(X),a92=b("37236"),a93=b(_),a94=b("38283"),a95=b(ag),a96=b("39311"),a97=b(P),a98=b(yF),a99=b(P),a9_=b("3496"),a9$=b(yF),a_a=b(o),a_b=b("24526"),a_c=b("30065"),a_d=b(z),a_e=b("32548"),a_f=b(X),a_g=b("33675"),a_h=b(_),a_i=b(Fz),a_j=b(ag),a_k=b("35979"),a_l=b(P),a_m=b(AO),a_n=b(P),a_o=b("3350"),a_p=b(AO),a_q=b(o),a_r=b("23007"),a_s=b("27906"),a_t=b(z),a_u=b("30424"),a_v=b(X),a_w=b("31682"),a_x=b(_),a_y=b(yL),a_z=b(ag),a_A=b("34214"),a_B=b(P),a_C=b(Ex),a_D=b(P),a_E=b("3187"),a_F=b(Ex),a_H=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a9U=[0,b(Q),zJ,5,zJ,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a8_=b(o),a8$=b("28728"),a9a=b("34621"),a9b=b(z),a9c=b("37224"),a9d=b(X),a9e=b("38264"),a9f=b(_),a9g=b(yi),a9h=b(ag),a9i=b("40396"),a9j=b(P),a9k=b(xO),a9l=b(P),a9m=b("3592"),a9n=b(xO),a9o=b(o),a9p=b("25203"),a9q=b("30895"),a9r=b(z),a9s=b("33446"),a9t=b(X),a9u=b("34604"),a9v=b(_),a9w=b("35796"),a9x=b(ag),a9y=b("36972"),a9z=b(P),a9A=b(Fl),a9B=b(P),a9C=b("3442"),a9D=b(Fl),a9E=b(o),a9F=b("23642"),a9G=b("28676"),a9H=b(z),a9I=b(xr),a9J=b(X),a9K=b("32556"),a9L=b(_),a9M=b("33866"),a9N=b(ag),a9O=b("35158"),a9P=b(P),a9Q=b(wm),a9R=b(P),a9S=b("3275"),a9T=b(wm),a9V=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a88=[0,b(Q),Fh,5,Fh,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a8m=b(o),a8n=b("29575"),a8o=b("35642"),a8p=b(z),a8q=b("38322"),a8r=b(X),a8s=b("39393"),a8t=b(_),a8u=b("40501"),a8v=b(ag),a8w=b("41588"),a8x=b(P),a8y=b(Dr),a8z=b(P),a8A=b("3698"),a8B=b(Dr),a8C=b(o),a8D=b("25946"),a8E=b("31806"),a8F=b(z),a8G=b("34433"),a8H=b(X),a8I=b("35625"),a8J=b(_),a8K=b("36852"),a8L=b(ag),a8M=b("38063"),a8N=b(P),a8O=b(AC),a8P=b(P),a8Q=b("3544"),a8R=b(AC),a8S=b(o),a8T=b("24339"),a8U=b("29522"),a8V=b(z),a8W=b("32186"),a8X=b(X),a8Y=b("33516"),a8Z=b(_),a80=b(Fz),a81=b(ag),a82=b("36195"),a83=b(P),a84=b(En),a85=b(P),a86=b("3372"),a87=b(En),a89=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a8k=[0,b(Q),De,5,De,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a7A=b(o),a7B=b("29670"),a7C=b("35757"),a7D=b(z),a7E=b("38445"),a7F=b(X),a7G=b("39519"),a7H=b(_),a7I=b("40601"),a7J=b(ag),a7K=b("41721"),a7L=b(P),a7M=b(Dx),a7N=b(P),a7O=b("3710"),a7P=b(Dx),a7Q=b(o),a7R=b("26029"),a7S=b("31908"),a7T=b(z),a7U=b("34643"),a7V=b(X),a7W=b("35739"),a7X=b(_),a7Y=b("36970"),a7Z=b(ag),a70=b("38185"),a71=b(P),a72=b(Bd),a73=b(P),a74=b("3555"),a75=b(Bd),a76=b(o),a77=b("24417"),a78=b("29616"),a79=b(z),a7_=b("32289"),a7$=b(X),a8a=b(zD),a8b=b(_),a8c=b("34977"),a8d=b(ag),a8e=b("36311"),a8f=b(P),a8g=b(Ag),a8h=b(P),a8i=b("3383"),a8j=b(Ag),a8l=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a7y=[0,b(Q),on,5,on,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a6O=b(o),a6P=b("29996"),a6Q=b("36149"),a6R=b(z),a6S=b("38868"),a6T=b(X),a6U=b("39954"),a6V=b(_),a6W=b("41078"),a6X=b(ag),a6Y=b("42180"),a6Z=b(P),a60=b(Bs),a61=b(P),a62=b("3751"),a63=b(Bs),a64=b(o),a65=b("26315"),a66=b("32259"),a67=b(z),a68=b("34923"),a69=b(X),a6_=b("36132"),a6$=b(_),a7a=b("37373"),a7b=b(ag),a7c=b("38605"),a7d=b(P),a7e=b(DH),a7f=b(P),a7g=b("3594"),a7h=b(DH),a7i=b(o),a7j=b("24686"),a7k=b("29942"),a7l=b(z),a7m=b("32644"),a7n=b(X),a7o=b("33993"),a7p=b(_),a7q=b("35362"),a7r=b(ag),a7s=b("36710"),a7t=b(P),a7u=b(Az),a7v=b(P),a7w=b("3420"),a7x=b(Az),a7z=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a6M=[0,b(Q),zW,5,zW,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a52=b(o),a53=b("30296"),a54=b("36510"),a55=b(z),a56=b("39257"),a57=b(X),a58=b("40354"),a59=b(_),a5_=b("41489"),a5$=b(ag),a6a=b("42602"),a6b=b(P),a6c=b(v0),a6d=b(P),a6e=b("3789"),a6f=b(v0),a6g=b(o),a6h=b("26578"),a6i=b("32582"),a6j=b(z),a6k=b("35272"),a6l=b(X),a6m=b("36493"),a6n=b(_),a6o=b("37751"),a6p=b(ag),a6q=b("38991"),a6r=b(P),a6s=b(xF),a6t=b(P),a6u=b("3630"),a6v=b(xF),a6w=b(o),a6x=b("24933"),a6y=b("30241"),a6z=b(z),a6A=b("32970"),a6B=b(X),a6C=b("34333"),a6D=b(_),a6E=b("35716"),a6F=b(ag),a6G=b("37077"),a6H=b(P),a6I=b(u7),a6J=b(P),a6K=b("3454"),a6L=b(u7),a6N=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a50=[0,b(Q),F4,5,F4,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a5e=b(o),a5f=b("30947"),a5g=b("37295"),a5h=b(z),a5i=b("40101"),a5j=b(X),a5k=b("41222"),a5l=b(_),a5m=b("42381"),a5n=b(ag),a5o=b("43518"),a5p=b(P),a5q=b(CK),a5r=b(P),a5s=b("3870"),a5t=b(CK),a5u=b(o),a5v=b("27149"),a5w=b("33283"),a5x=b(z),a5y=b("36030"),a5z=b(X),a5A=b("37278"),a5B=b(_),a5C=b("38563"),a5D=b(ag),a5E=b("39829"),a5F=b(P),a5G=b("42649"),a5H=b(P),a5I=b("3708"),a5J=b("42659"),a5K=b(o),a5L=b("25469"),a5M=b("30891"),a5N=b(z),a5O=b("33679"),a5P=b(X),a5Q=b("35071"),a5R=b(_),a5S=b("36484"),a5T=b(ag),a5U=b("37874"),a5V=b(P),a5W=b(CS),a5X=b(P),a5Y=b("3528"),a5Z=b(CS),a51=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a5c=[0,b(Q),vS,5,vS,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a4s=b(o),a4t=b("31123"),a4u=b("37508"),a4v=b(z),a4w=b("40330"),a4x=b(X),a4y=b("41457"),a4z=b(_),a4A=b("42623"),a4B=b(ag),a4C=b("43766"),a4D=b(P),a4E=b(u9),a4F=b(P),a4G=b("3892"),a4H=b(u9),a4I=b(o),a4J=b("27304"),a4K=b("33473"),a4L=b(z),a4M=b("36235"),a4N=b(X),a4O=b("37490"),a4P=b(_),a4Q=b("38783"),a4R=b(ag),a4S=b("40056"),a4T=b(P),a4U=b(Cb),a4V=b(P),a4W=b("3729"),a4X=b(Cb),a4Y=b(o),a4Z=b("25614"),a40=b("31067"),a41=b(z),a42=b("33871"),a43=b(X),a44=b("35271"),a45=b(_),a46=b("36692"),a47=b(ag),a48=b("38090"),a49=b(P),a4_=b(zl),a4$=b(P),a5a=b("3548"),a5b=b(zl),a5d=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a4q=[0,b(Q),f6,5,f6,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a3G=b(o),a3H=b("31148"),a3I=b("37538"),a3J=b(z),a3K=b("40362"),a3L=b(X),a3M=b("41490"),a3N=b(_),a3O=b("42657"),a3P=b(ag),a3Q=b("43801"),a3R=b(P),a3S=b(xm),a3T=b(P),a3U=b("3895"),a3V=b(xm),a3W=b(o),a3X=b("27326"),a3Y=b(FV),a3Z=b(z),a30=b("36264"),a31=b(X),a32=b("37520"),a33=b(_),a34=b("38814"),a35=b(ag),a36=b("40088"),a37=b(P),a38=b(FJ),a39=b(P),a3_=b("3732"),a3$=b(FJ),a4a=b(o),a4b=b("25634"),a4c=b("31092"),a4d=b(z),a4e=b("33898"),a4f=b(X),a4g=b("35299"),a4h=b(_),a4i=b("36721"),a4j=b(ag),a4k=b("38120"),a4l=b(P),a4m=b(Ac),a4n=b(P),a4o=b("3551"),a4p=b(Ac),a4r=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a3E=[0,b(Q),Co,5,Co,62,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a2U=b(o),a2V=b("31382"),a2W=b("37820"),a2X=b(z),a2Y=b("40665"),a2Z=b(X),a20=b("41801"),a21=b(_),a22=b("42977"),a23=b(ag),a24=b("44130"),a25=b(P),a26=b(z8),a27=b(P),a28=b("3924"),a29=b(z8),a2_=b(o),a2$=b("27531"),a3a=b("33751"),a3b=b(z),a3c=b("36536"),a3d=b(X),a3e=b("37801"),a3f=b(_),a3g=b("39105"),a3h=b(ag),a3i=b("40389"),a3j=b(P),a3k=b(wB),a3l=b(P),a3m=b("3760"),a3n=b(wB),a3o=b(o),a3p=b("25826"),a3q=b("31325"),a3r=b(z),a3s=b("34152"),a3t=b(X),a3u=b("35564"),a3v=b(_),a3w=b("36996"),a3x=b(ag),a3y=b("38406"),a3z=b(P),a3A=b(zG),a3B=b(P),a3C=b("3578"),a3D=b(zG),a3F=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a2S=[0,b(Q),nz,5,nz,32,[0,b(bS),[0,b(bl),[0,b(L),0]]]],a18=b(o),a19=b("31476"),a1_=b("37933"),a1$=b(z),a2a=b("40787"),a2b=b(X),a2c=b("41927"),a2d=b(_),a2e=b("43106"),a2f=b(ag),a2g=b("44262"),a2h=b(P),a2i=b(wq),a2j=b(P),a2k=b("3936"),a2l=b(wq),a2m=b(o),a2n=b("27614"),a2o=b("33853"),a2p=b(z),a2q=b("36646"),a2r=b(X),a2s=b("37915"),a2t=b(_),a2u=b("39222"),a2v=b(ag),a2w=b("40510"),a2x=b(P),a2y=b(EZ),a2z=b(P),a2A=b("3771"),a2B=b(EZ),a2C=b(o),a2D=b("25904"),a2E=b("31419"),a2F=b(z),a2G=b("34255"),a2H=b(X),a2I=b("35670"),a2J=b(_),a2K=b("37107"),a2L=b(ag),a2M=b("38521"),a2N=b(P),a2O=b(FY),a2P=b(P),a2Q=b("3588"),a2R=b(FY),a2T=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],bhi=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a17=[0,b(e),aQ,10,aQ,14,[0,b(D),[0,b(A),[0,b(f),0]]]],a14=[0,b(E),FW,14,FW,36,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a12=b(o),a13=b(o),a15=[0,b(e),o6,10,o6,32,[0,b(D),[0,b(A),[0,b(f),0]]]],a11=[0,b(e),o6,10,o6,32,[0,b(D),[0,b(A),[0,b(f),0]]]],a1W=[0,b(aN),u3,5,u3,16,[0,b(ol),[0,b(bA),[0,b(aL),0]]]],a1T=b(gN),a1U=b(qu),a1V=b(e_),a1X=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1S=[0,b(aN),w0,43,w0,70,[0,b(vp),[0,b(bA),[0,b(aL),0]]]],a1O=b(o),a1P=b(e_),a1Q=b(gN),a1R=b(e_),a1Y=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1L=[0,b(Q),D4,5,D4,16,[0,b(ol),[0,b(bl),[0,b(L),0]]]],a1I=b(gu),a1J=b(qU),a1K=b(fj),a1M=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1H=[0,b(Q),D5,31,D5,58,[0,b(vp),[0,b(bl),[0,b(L),0]]]],a1D=b(o),a1E=b(fj),a1F=b(gu),a1G=b(fj),a1N=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1C=[0,b(e),c7,47,c7,53,[0,b(D),[0,b(A),[0,b(f),0]]]],a1w=[0,b(e),hb,14,hb,50,[0,b(D),[0,b(A),[0,b(f),0]]]],a1q=[0,b(E),hA,14,hA,64,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1m=[0,b(E),hj,14,hj,59,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1i=[0,b(Q),yu,14,yu,33,[0,b(CP),[0,b(bl),[0,b(L),0]]]],a1h=b(AD),a1d=[0,b(Q),BZ,14,BZ,33,[0,b(Cs),[0,b(bl),[0,b(L),0]]]],a1c=b(sc),a0_=[0,b(Q),Eq,14,Eq,41,[0,b(CP),[0,b(bl),[0,b(L),0]]]],a09=b("390000"),a05=[0,b(Q),Fe,14,Fe,41,[0,b(Cs),[0,b(bl),[0,b(L),0]]]],a04=b(qG),a00=[0,b(Q),FK,14,FK,41,[0,b("Article 36"),[0,b(bl),[0,b(L),0]]]],a0Z=b(ib),a0V=[0,b(e7),rS,14,rS,36,[0,b(CZ),[0,b(y9),0]]],a0T=b(vt),a0U=b(en),a0P=[0,b(Q),x8,14,x8,40,[0,b("Article 35"),[0,b(bl),[0,b(L),0]]]],a0O=b(kj),a0Q=[0,b(e),oR,11,oR,37,[0,b(D),[0,b(A),[0,b(f),0]]]],a0N=[0,b(e),oR,11,oR,37,[0,b(D),[0,b(A),[0,b(f),0]]]],a0R=[0,b(V),[0,b("montant_forfaitaire_d842_6"),0]],a0W=[0,b(e),lV,11,lV,33,[0,b(D),[0,b(A),[0,b(f),0]]]],a0S=[0,b(e),lV,11,lV,33,[0,b(D),[0,b(A),[0,b(f),0]]]],a0X=[0,b(V),[0,b(Fx),0]],a01=[0,b(e),l_,11,l_,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a0Y=[0,b(e),l_,11,l_,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a02=[0,b(V),[0,b("montant_minimal_aide_d842_6"),0]],a06=[0,b(e),nk,11,nk,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a03=[0,b(e),nk,11,nk,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a07=[0,b(V),[0,b("montant_forfaitaire_d842_11"),0]],a0$=[0,b(e),kQ,11,kQ,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a08=[0,b(e),kQ,11,kQ,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1a=[0,b(V),[0,b("montant_forfaitaire_d842_12"),0]],a1e=[0,b(e),m8,11,m8,30,[0,b(D),[0,b(A),[0,b(f),0]]]],a1b=[0,b(e),m8,11,m8,30,[0,b(D),[0,b(A),[0,b(f),0]]]],a1f=[0,b(V),[0,b("coefficient_d842_11"),0]],a1j=[0,b(e),mr,11,mr,30,[0,b(D),[0,b(A),[0,b(f),0]]]],a1g=[0,b(e),mr,11,mr,30,[0,b(D),[0,b(A),[0,b(f),0]]]],a1k=[0,b(V),[0,b("coefficient_d842_12"),0]],a1n=[0,b(E),hj,14,hj,59,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1o=[0,b(V),[0,b(nf),0]],a1l=[0,b(E),hj,14,hj,59,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1r=[0,b(E),hA,14,hA,64,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1s=[0,b(V),[0,b(n1),0]],a1p=[0,b(E),hA,14,hA,64,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a1t=[0,b(V),[0,b(f7),[0,b(kp),0]]],a1u=[0,b(V),[0,b(f7),[0,b(kp),0]]],a1x=[0,b(e),hb,14,hb,50,[0,b(D),[0,b(A),[0,b(f),0]]]],a1y=[0,b(V),[0,b(kA),0]],a1v=[0,b(e),hb,14,hb,50,[0,b(D),[0,b(A),[0,b(f),0]]]],a1z=[0,b(V),[0,b(eB),[0,b(bj),0]]],a1A=[0,b(V),[0,b(eB),[0,b(bj),0]]],a1Z=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a1B=[0,b(e),c7,11,c7,38,[0,b(D),[0,b(A),[0,b(f),0]]]],a10=[0,b(V),[0,b(qv),0]],a16=[0,b(V),[0,b(bH),0]],bhj=[0,b(V),[0,b(b7),0]],bhp=[0,b(e),fV,11,fV,42,[0,b(D),[0,b(A),[0,b(f),0]]]],bhk=[0,b(e),fV,11,fV,42,[0,b(D),[0,b(A),[0,b(f),0]]]],bhq=[0,b(V),[0,b("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bhu=[0,b(V),[0,b(df),0]],bhZ=[0,b(V),[0,b(dC),0]],bh7=[0,b(e),hz,10,hz,15,[0,b(D),[0,b(A),[0,b(f),0]]]],bh0=[0,b(e),hz,10,hz,15,[0,b(D),[0,b(A),[0,b(f),0]]]],bh8=[0,b(V),[0,b(CR),0]],bin=[0,b(e),hM,11,hM,36,[0,b(D),[0,b(A),[0,b(f),0]]]],bh9=[0,b(e),hM,11,hM,36,[0,b(D),[0,b(A),[0,b(f),0]]]],bio=[0,b(V),[0,b("plafond_mensualit\xc3\xa9_d842_6"),0]],bir=[0,b(E),jp,14,jp,75,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],bis=[0,b(V),[0,b(mL),0]],bip=[0,b(E),jp,14,jp,75,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biv=[0,b(E),hH,14,hH,69,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biw=[0,b(V),[0,b(oj),0]],bit=[0,b(E),hH,14,hH,69,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biz=[0,b(E),ht,14,ht,70,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biA=[0,b(V),[0,b(mB),0]],bix=[0,b(E),ht,14,ht,70,[0,b(bC),[0,b(an),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],biB=[0,b(V),[0,b(fG),[0,b(dN),0]]],biC=[0,b(V),[0,b(fG),[0,b(dN),0]]],biG=[0,b(e),iT,14,iT,59,[0,b(D),[0,b(A),[0,b(f),0]]]],biH=[0,b(V),[0,b(xN),0]],biD=[0,b(e),iT,14,iT,59,[0,b(D),[0,b(A),[0,b(f),0]]]],biK=[0,b(e),hP,14,hP,61,[0,b(D),[0,b(A),[0,b(f),0]]]],biL=[0,b(V),[0,b(zt),0]],biI=[0,b(e),hP,14,hP,61,[0,b(D),[0,b(A),[0,b(f),0]]]],biO=[0,b(e),hy,14,hy,67,[0,b(D),[0,b(A),[0,b(f),0]]]],biP=[0,b(V),[0,b(vx),0]],biM=[0,b(e),hy,14,hy,67,[0,b(D),[0,b(A),[0,b(f),0]]]],biS=[0,b(e),gx,14,gx,65,[0,b(D),[0,b(A),[0,b(f),0]]]],biT=[0,b(V),[0,b(Ft),0]],biQ=[0,b(e),gx,14,gx,65,[0,b(D),[0,b(A),[0,b(f),0]]]],biW=[0,b(e),hZ,14,hZ,70,[0,b(D),[0,b(A),[0,b(f),0]]]],biX=[0,b(V),[0,b(Ci),0]],biU=[0,b(e),hZ,14,hZ,70,[0,b(D),[0,b(A),[0,b(f),0]]]],bi0=[0,b(e),hp,14,hp,44,[0,b(D),[0,b(A),[0,b(f),0]]]],bi1=[0,b(V),[0,b(Cv),0]],biY=[0,b(e),hp,14,hp,44,[0,b(D),[0,b(A),[0,b(f),0]]]],bi4=[0,b(e),iQ,14,iQ,53,[0,b(D),[0,b(A),[0,b(f),0]]]],bi5=[0,b(V),[0,b(E8),0]],bi2=[0,b(e),iQ,14,iQ,53,[0,b(D),[0,b(A),[0,b(f),0]]]],bi9=[0,b(e),iN,14,iN,49,[0,b(D),[0,b(A),[0,b(f),0]]]],bi_=[0,b(V),[0,b(wc),0]],bi6=[0,b(e),iN,14,iN,49,[0,b(D),[0,b(A),[0,b(f),0]]]],bjf=[0,b(V),[0,b(nJ),[0,b(at),0]]],bjg=[0,b(V),[0,b(nJ),[0,b(at),0]]],bjl=[0,b(e),hn,11,hn,47,[0,b(D),[0,b(A),[0,b(f),0]]]],bjh=[0,b(e),hn,11,hn,47,[0,b(D),[0,b(A),[0,b(f),0]]]],bjm=[0,b(V),[0,b("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bjp=[0,b(e),of,11,of,30,[0,b(D),[0,b(A),[0,b(f),0]]]],bjn=[0,b(e),of,11,of,30,[0,b(D),[0,b(A),[0,b(f),0]]]],bjq=[0,b(V),[0,b(sl),0]],bjt=[0,b(e),na,11,na,30,[0,b(D),[0,b(A),[0,b(f),0]]]],bjr=[0,b(e),na,11,na,30,[0,b(D),[0,b(A),[0,b(f),0]]]],bju=[0,b(V),[0,b(q8),0]],bjx=[0,b(e),n9,11,n9,38,[0,b(D),[0,b(A),[0,b(f),0]]]],bjv=[0,b(e),n9,11,n9,38,[0,b(D),[0,b(A),[0,b(f),0]]]],bjy=[0,b(V),[0,b(q5),0]],bjH=[0,b(V),[0,b(eD),0]],bjK=[0,b(e),oi,12,oi,31,[0,b(D),[0,b(A),[0,b(f),0]]]],bjI=[0,b(e),oi,12,oi,31,[0,b(D),[0,b(A),[0,b(f),0]]]],bjL=[0,b(V),[0,b(cT),0]],bjY=[0,b(V),[0,b(em),0]],bkb=[0,b(V),[0,b(bI),0]],bkk=[0,b(V),[0,b(fg),0]],a0K=[0,b(E),xj,14,xj,36,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a0F=[0,b(ao),[0,b(bI),[0,b(ai),0]]],a0G=[0,b(ao),[0,b(bI),0]],a0H=[0,b(ao),[0,b(bI),[0,b(ac),0]]],a0I=[0,b(ao),[0,b(bI),0]],a0J=b(o),a0L=[0,b(e),nE,10,nE,25,[0,b(N),[0,b(A),[0,b(f),0]]]],a0E=[0,b(e),nE,10,nE,25,[0,b(N),[0,b(A),[0,b(f),0]]]],a0B=[0,b(E),ww,14,ww,36,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a0q=[0,b(ao),[0,b(kJ),[0,b(ai),0]]],a0r=[0,b(ao),[0,b(kJ),0]],a0s=[0,b(ao),[0,b(kJ),[0,b(ac),0]]],a0t=[0,b(ao),[0,b(kJ),0]],a0u=[0,b(bj),[0,b(bO),[0,b(ai),0]]],a0v=[0,b(bj),[0,b(bO),0]],a0w=[0,b(bj),[0,b(bO),[0,b(ac),0]]],a0x=[0,b(bj),[0,b(bO),0]],a0y=b(k2),a0z=b(o),a0A=b(o),a0C=[0,b(e),kz,10,kz,40,[0,b(N),[0,b(A),[0,b(f),0]]]],a0p=[0,b(e),kz,10,kz,40,[0,b(N),[0,b(A),[0,b(f),0]]]],a0m=[0,b(E),C$,14,C$,36,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],a0i=[0,b(ao),[0,b(em),[0,b(ai),0]]],a0j=[0,b(ao),[0,b(em),0]],a0k=[0,b(ao),[0,b(em),[0,b(ac),0]]],a0l=[0,b(ao),[0,b(em),0]],a0n=[0,b(e),nI,10,nI,19,[0,b(N),[0,b(A),[0,b(f),0]]]],a0h=[0,b(e),nI,10,nI,19,[0,b(N),[0,b(A),[0,b(f),0]]]],a0e=[0,b(E),x4,14,x4,36,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZ6=[0,b(ao),[0,b(bH),[0,b(ai),0]]],aZ7=[0,b(ao),[0,b(bH),0]],aZ8=[0,b(ao),[0,b(bH),[0,b(ac),0]]],aZ9=[0,b(ao),[0,b(bH),0]],aZ_=[0,b(ao),[0,b(eD),[0,b(ai),0]]],aZ$=[0,b(ao),[0,b(eD),0]],a0a=[0,b(ao),[0,b(eD),[0,b(ac),0]]],a0b=[0,b(ao),[0,b(eD),0]],a0c=b(o),a0d=b(o),a0f=[0,b(e),kt,10,kt,32,[0,b(N),[0,b(A),[0,b(f),0]]]],aZ5=[0,b(e),kt,10,kt,32,[0,b(N),[0,b(A),[0,b(f),0]]]],aZ2=[0,b(E),Fm,14,Fm,33,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZY=[0,b(E),B$,14,B$,47,[0,b(CF),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZP=[0,b(ao),[0,b(df),[0,b(ai),0]]],aZQ=[0,b(ao),[0,b(df),0]],aZR=[0,b(ao),[0,b(df),[0,b(ac),0]]],aZS=[0,b(ao),[0,b(df),0]],aZT=[0,b(ao),[0,b(df),[0,b(ai),0]]],aZU=[0,b(ao),[0,b(df),0]],aZV=[0,b(ao),[0,b(df),[0,b(ac),0]]],aZW=[0,b(ao),[0,b(df),0]],aZX=b(o),aZZ=[0,b(e),n8,11,n8,44,[0,b(N),[0,b(A),[0,b(f),0]]]],aZO=[0,b(e),n8,11,n8,44,[0,b(N),[0,b(A),[0,b(f),0]]]],aZL=[0,b(E),D_,14,D_,27,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZH=[0,b(E),wk,14,wk,36,[0,b(CF),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZI=[0,b(e),nb,11,nb,33,[0,b(N),[0,b(A),[0,b(f),0]]]],aZG=[0,b(e),nb,11,nb,33,[0,b(N),[0,b(A),[0,b(f),0]]]],aZD=[0,b(E),x$,14,x$,41,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZx=[0,b(E),hB,14,hB,70,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZt=[0,b(E),hX,14,hX,69,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZp=[0,b(E),i4,14,i4,75,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZl=[0,b(E),DF,14,DF,36,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZj=b(o),aZk=b(o),aZm=[0,b(e),mT,10,mT,32,[0,b(N),[0,b(A),[0,b(f),0]]]],aZi=[0,b(e),mT,10,mT,32,[0,b(N),[0,b(A),[0,b(f),0]]]],aZe=[0,b(Q),yf,6,yf,79,[0,b(fD),[0,b(fW),[0,b(L),0]]]],aZc=b("8708"),aZd=b("13559"),aZf=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aZa=[0,b(Q),4153,6,4154,38,[0,b(fD),[0,b(fW),[0,b(L),0]]]],aY_=b("21362"),aY$=b("33196"),aZb=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aY7=[0,b(Q),rP,6,4172,24,[0,b(fD),[0,b(fW),[0,b(L),0]]]],aY5=b(z$),aY6=b(Au),aY8=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aY4=[0,b(Q),4135,6,4136,46,[0,b(fD),[0,b(fW),[0,b(L),0]]]],aY2=b(z$),aY3=b(Au),aY9=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aY0=[0,b(aN),sp,6,sp,79,[0,b(fD),[0,b(bA),[0,b(aL),0]]]],aYY=b("8414"),aYZ=b("13100"),aY1=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aYW=[0,b(aN),j3,6,j_,38,[0,b(fD),[0,b(bA),[0,b(aL),0]]]],aYU=b("20640"),aYV=b("32073"),aYX=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aYR=[0,b(aN),765,6,766,24,[0,b(fD),[0,b(bA),[0,b(aL),0]]]],aYP=b(DZ),aYQ=b(zN),aYS=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aYO=[0,b(aN),727,6,728,46,[0,b(fD),[0,b(bA),[0,b(aL),0]]]],aYM=b(DZ),aYN=b(zN),aYT=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aYH=[0,b(Q),CL,14,CL,41,[0,b(BY),[0,b(fW),[0,b(L),0]]]],aYD=b(o),aYE=b(fj),aYF=b(gu),aYG=b(fj),aYI=[0,b(e),fC,12,fC,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aYB=[0,b(aN),Y,14,Y,41,[0,b(BY),[0,b(bA),[0,b(aL),0]]]],aYx=b(o),aYy=b(e_),aYz=b(gN),aYA=b(e_),aYC=[0,b(e),fC,12,fC,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aYr=[0,b(E),mZ,14,mZ,61,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aYs=[0,b(E),mZ,14,mZ,61,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aYt=[0,b(ao),[0,b(Ed),0]],aYo=[0,b(e),hq,14,hq,49,[0,b(N),[0,b(A),[0,b(f),0]]]],aYk=[0,b(e),hm,14,hm,53,[0,b(N),[0,b(A),[0,b(f),0]]]],aYg=[0,b(e),gG,14,gG,44,[0,b(N),[0,b(A),[0,b(f),0]]]],aYc=[0,b(e),hR,14,hR,70,[0,b(N),[0,b(A),[0,b(f),0]]]],aX_=[0,b(e),fL,14,fL,65,[0,b(N),[0,b(A),[0,b(f),0]]]],aX6=[0,b(e),iL,14,iL,67,[0,b(N),[0,b(A),[0,b(f),0]]]],aX2=[0,b(e),iq,14,iq,61,[0,b(N),[0,b(A),[0,b(f),0]]]],aXY=[0,b(e),id,14,id,59,[0,b(N),[0,b(A),[0,b(f),0]]]],aXS=[0,b(e),ij,14,ij,50,[0,b(N),[0,b(A),[0,b(f),0]]]],aXM=[0,b(E),h1,14,h1,64,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXI=[0,b(E),jn,14,jn,59,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXE=[0,b(E),ja,14,ja,55,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXA=[0,b(Q),yw,14,yw,51,[0,b("Article 44"),[0,b(fW),[0,b(L),0]]]],aXz=b(qG),aXv=[0,b(Q),oH,14,oH,41,[0,b("Article 41"),[0,b(fW),[0,b(L),0]]]],aXu=b(kj),aXq=[0,b(Q),Di,14,Di,42,[0,b("Article 42"),[0,b(fW),[0,b(L),0]]]],aXp=b(ib),aXr=[0,b(e),o3,11,o3,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aXo=[0,b(e),o3,11,o3,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aXs=[0,b(ao),[0,b("montant_minimal_aide_d842_15"),0]],aXw=[0,b(e),mc,11,mc,38,[0,b(N),[0,b(A),[0,b(f),0]]]],aXt=[0,b(e),mc,11,mc,38,[0,b(N),[0,b(A),[0,b(f),0]]]],aXx=[0,b(ao),[0,b("montant_forfaitaire_d842_15"),0]],aXB=[0,b(e),nC,11,nC,48,[0,b(N),[0,b(A),[0,b(f),0]]]],aXy=[0,b(e),nC,11,nC,48,[0,b(N),[0,b(A),[0,b(f),0]]]],aXC=[0,b(ao),[0,b("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aXF=[0,b(E),ja,14,ja,55,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXG=[0,b(ao),[0,b(By),0]],aXD=[0,b(E),ja,14,ja,55,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXJ=[0,b(E),jn,14,jn,59,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXK=[0,b(ao),[0,b(nf),0]],aXH=[0,b(E),jn,14,jn,59,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXN=[0,b(E),h1,14,h1,64,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXO=[0,b(ao),[0,b(n1),0]],aXL=[0,b(E),h1,14,h1,64,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXP=[0,b(ao),[0,b(f7),[0,b(ky),0]]],aXQ=[0,b(ao),[0,b(f7),[0,b(ky),0]]],aXT=[0,b(e),ij,14,ij,50,[0,b(N),[0,b(A),[0,b(f),0]]]],aXU=[0,b(ao),[0,b(kA),0]],aXR=[0,b(e),ij,14,ij,50,[0,b(N),[0,b(A),[0,b(f),0]]]],aXV=[0,b(ao),[0,b(eB),[0,b(bj),0]]],aXW=[0,b(ao),[0,b(eB),[0,b(bj),0]]],aXZ=[0,b(e),id,14,id,59,[0,b(N),[0,b(A),[0,b(f),0]]]],aX0=[0,b(ao),[0,b(xN),0]],aXX=[0,b(e),id,14,id,59,[0,b(N),[0,b(A),[0,b(f),0]]]],aX3=[0,b(e),iq,14,iq,61,[0,b(N),[0,b(A),[0,b(f),0]]]],aX4=[0,b(ao),[0,b(zt),0]],aX1=[0,b(e),iq,14,iq,61,[0,b(N),[0,b(A),[0,b(f),0]]]],aX7=[0,b(e),iL,14,iL,67,[0,b(N),[0,b(A),[0,b(f),0]]]],aX8=[0,b(ao),[0,b(vx),0]],aX5=[0,b(e),iL,14,iL,67,[0,b(N),[0,b(A),[0,b(f),0]]]],aX$=[0,b(e),fL,14,fL,65,[0,b(N),[0,b(A),[0,b(f),0]]]],aYa=[0,b(ao),[0,b(Ft),0]],aX9=[0,b(e),fL,14,fL,65,[0,b(N),[0,b(A),[0,b(f),0]]]],aYd=[0,b(e),hR,14,hR,70,[0,b(N),[0,b(A),[0,b(f),0]]]],aYe=[0,b(ao),[0,b(Ci),0]],aYb=[0,b(e),hR,14,hR,70,[0,b(N),[0,b(A),[0,b(f),0]]]],aYh=[0,b(e),gG,14,gG,44,[0,b(N),[0,b(A),[0,b(f),0]]]],aYi=[0,b(ao),[0,b(Cv),0]],aYf=[0,b(e),gG,14,gG,44,[0,b(N),[0,b(A),[0,b(f),0]]]],aYl=[0,b(e),hm,14,hm,53,[0,b(N),[0,b(A),[0,b(f),0]]]],aYm=[0,b(ao),[0,b(E8),0]],aYj=[0,b(e),hm,14,hm,53,[0,b(N),[0,b(A),[0,b(f),0]]]],aYp=[0,b(e),hq,14,hq,49,[0,b(N),[0,b(A),[0,b(f),0]]]],aYq=[0,b(ao),[0,b(wc),0]],aYn=[0,b(e),hq,14,hq,49,[0,b(N),[0,b(A),[0,b(f),0]]]],aYu=[0,b(ao),[0,b(nJ),[0,b(at),0]]],aYv=[0,b(ao),[0,b(nJ),[0,b(at),0]]],aYJ=[0,b(e),fC,12,fC,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aYw=[0,b(e),fC,12,fC,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aYK=[0,b(ao),[0,b(qv),0]],aZg=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aYL=[0,b(e),ci,12,ci,29,[0,b(N),[0,b(A),[0,b(f),0]]]],aZh=[0,b(ao),[0,b(u4),0]],aZn=[0,b(ao),[0,b(bH),0]],aZq=[0,b(E),i4,14,i4,75,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZr=[0,b(ao),[0,b(mL),0]],aZo=[0,b(E),i4,14,i4,75,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZu=[0,b(E),hX,14,hX,69,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZv=[0,b(ao),[0,b(oj),0]],aZs=[0,b(E),hX,14,hX,69,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZy=[0,b(E),hB,14,hB,70,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZz=[0,b(ao),[0,b(mB),0]],aZw=[0,b(E),hB,14,hB,70,[0,b(by),[0,b(ap),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aZA=[0,b(ao),[0,b(fG),[0,b(dN),0]]],aZB=[0,b(ao),[0,b(fG),[0,b(dN),0]]],aZE=[0,b(e),iG,12,iG,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aZC=[0,b(e),iG,12,iG,39,[0,b(N),[0,b(A),[0,b(f),0]]]],aZF=[0,b(ao),[0,b(q5),0]],aZJ=[0,b(ao),[0,b(df),0]],aZM=[0,b(e),kC,12,kC,25,[0,b(N),[0,b(A),[0,b(f),0]]]],aZK=[0,b(e),kC,12,kC,25,[0,b(N),[0,b(A),[0,b(f),0]]]],aZN=[0,b(ao),[0,b(FN),0]],aZ0=[0,b(ao),[0,b(eD),0]],aZ3=[0,b(e),l0,12,l0,31,[0,b(N),[0,b(A),[0,b(f),0]]]],aZ1=[0,b(e),l0,12,l0,31,[0,b(N),[0,b(A),[0,b(f),0]]]],aZ4=[0,b(ao),[0,b(cT),0]],a0g=[0,b(ao),[0,b(em),0]],a0o=[0,b(ao),[0,b(kJ),0]],a0D=[0,b(ao),[0,b(bI),0]],a0M=[0,b(ao),[0,b(fg),0]],aXk=[0,b(E),v5,24,v5,43,[0,b(Fp),[0,b(sn),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXj=b(o),aXl=[0,b(e),hI,12,hI,31,[0,b(K),[0,b(A),[0,b(f),0]]]],aXi=[0,b(e),ro,14,ro,33,[0,b(K),[0,b(A),[0,b(f),0]]]],aXd=[0,b(E),vN,24,vN,46,[0,b(Fp),[0,b(sn),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aXe=[0,b(e),iY,12,iY,34,[0,b(K),[0,b(A),[0,b(f),0]]]],aXc=[0,b(e),rh,14,rh,36,[0,b(K),[0,b(A),[0,b(f),0]]]],aW_=[0,b(aC),[0,b(fg),[0,b(ai),0]]],aW$=[0,b(aC),[0,b(fg),0]],aXa=[0,b(aC),[0,b(fg),[0,b(ac),0]]],aXb=[0,b(aC),[0,b(fg),0]],aXf=[0,b(e),iY,12,iY,34,[0,b(K),[0,b(A),[0,b(f),0]]]],aW9=[0,b(e),iY,12,iY,34,[0,b(K),[0,b(A),[0,b(f),0]]]],aW4=[0,b(e),gy,14,gy,55,[0,b(K),[0,b(A),[0,b(f),0]]]],aW0=[0,b(e),he,14,he,59,[0,b(K),[0,b(A),[0,b(f),0]]]],aWW=[0,b(e),gF,14,gF,43,[0,b(K),[0,b(A),[0,b(f),0]]]],aWS=[0,b(e),gJ,14,gJ,42,[0,b(K),[0,b(A),[0,b(f),0]]]],aWO=[0,b(e),gP,5,ms,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWK=[0,b(e),gq,14,gq,53,[0,b(K),[0,b(A),[0,b(f),0]]]],aWG=[0,b(e),i_,14,i_,37,[0,b(K),[0,b(A),[0,b(f),0]]]],aWC=[0,b(e),h6,14,h6,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWy=[0,b(e),hW,14,hW,58,[0,b(K),[0,b(A),[0,b(f),0]]]],aWu=[0,b(e),gA,14,gA,46,[0,b(K),[0,b(A),[0,b(f),0]]]],aWq=[0,b(e),i0,14,i0,78,[0,b(K),[0,b(A),[0,b(f),0]]]],aWm=[0,b(e),hh,14,hh,60,[0,b(K),[0,b(A),[0,b(f),0]]]],aWi=[0,b(e),iC,14,iC,48,[0,b(K),[0,b(A),[0,b(f),0]]]],aWj=[0,b(e),iC,14,iC,48,[0,b(K),[0,b(A),[0,b(f),0]]]],aWk=[0,b(bg),[0,b("calcul_apl_locatif.loyer_principal_base"),0]],aWh=[0,b(e),iC,14,iC,48,[0,b(K),[0,b(A),[0,b(f),0]]]],aWn=[0,b(e),hh,14,hh,60,[0,b(K),[0,b(A),[0,b(f),0]]]],aWo=[0,b(bg),[0,b("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aWl=[0,b(e),hh,14,hh,60,[0,b(K),[0,b(A),[0,b(f),0]]]],aWr=[0,b(e),i0,14,i0,78,[0,b(K),[0,b(A),[0,b(f),0]]]],aWs=[0,b(bg),[0,b("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aWp=[0,b(e),i0,14,i0,78,[0,b(K),[0,b(A),[0,b(f),0]]]],aWv=[0,b(e),gA,14,gA,46,[0,b(K),[0,b(A),[0,b(f),0]]]],aWw=[0,b(bg),[0,b("calcul_apl_locatif.date_courante"),0]],aWt=[0,b(e),gA,14,gA,46,[0,b(K),[0,b(A),[0,b(f),0]]]],aWz=[0,b(e),hW,14,hW,58,[0,b(K),[0,b(A),[0,b(f),0]]]],aWA=[0,b(bg),[0,b("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aWx=[0,b(e),hW,14,hW,58,[0,b(K),[0,b(A),[0,b(f),0]]]],aWD=[0,b(e),h6,14,h6,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWE=[0,b(bg),[0,b("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aWB=[0,b(e),h6,14,h6,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWH=[0,b(e),i_,14,i_,37,[0,b(K),[0,b(A),[0,b(f),0]]]],aWI=[0,b(bg),[0,b("calcul_apl_locatif.zone"),0]],aWF=[0,b(e),i_,14,i_,37,[0,b(K),[0,b(A),[0,b(f),0]]]],aWL=[0,b(e),gq,14,gq,53,[0,b(K),[0,b(A),[0,b(f),0]]]],aWM=[0,b(bg),[0,b("calcul_apl_locatif.logement_est_chambre"),0]],aWJ=[0,b(e),gq,14,gq,53,[0,b(K),[0,b(A),[0,b(f),0]]]],aWP=[0,b(e),gP,5,ms,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWQ=[0,b(bg),[0,b("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aWN=[0,b(e),gP,5,ms,63,[0,b(K),[0,b(A),[0,b(f),0]]]],aWT=[0,b(e),gJ,14,gJ,42,[0,b(K),[0,b(A),[0,b(f),0]]]],aWU=[0,b(bg),[0,b("calcul_apl_locatif.type_aide"),0]],aWR=[0,b(e),gJ,14,gJ,42,[0,b(K),[0,b(A),[0,b(f),0]]]],aWX=[0,b(e),gF,14,gF,43,[0,b(K),[0,b(A),[0,b(f),0]]]],aWY=[0,b(bg),[0,b("calcul_apl_locatif.colocation"),0]],aWV=[0,b(e),gF,14,gF,43,[0,b(K),[0,b(A),[0,b(f),0]]]],aW1=[0,b(e),he,14,he,59,[0,b(K),[0,b(A),[0,b(f),0]]]],aW2=[0,b(bg),[0,b("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aWZ=[0,b(e),he,14,he,59,[0,b(K),[0,b(A),[0,b(f),0]]]],aW5=[0,b(e),gy,14,gy,55,[0,b(K),[0,b(A),[0,b(f),0]]]],aW6=[0,b(bg),[0,b("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aW3=[0,b(e),gy,14,gy,55,[0,b(K),[0,b(A),[0,b(f),0]]]],aW7=[0,b(bg),[0,b(E5),[0,b(aC),0]]],aW8=[0,b(bg),[0,b(E5),[0,b(aC),0]]],aXg=[0,b(bg),[0,b(av),0]],aXm=[0,b(e),hI,12,hI,31,[0,b(K),[0,b(A),[0,b(f),0]]]],aXh=[0,b(e),hI,12,hI,31,[0,b(K),[0,b(A),[0,b(f),0]]]],aXn=[0,b(bg),[0,b(cT),0]],aWb=[0,b(mv),67,5,71,21,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],aWc=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aWa=[0,b(mv),56,5,57,50,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],aWd=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aWe=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aV$=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aWf=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aV_=[0,b(bF),40,12,40,24,[0,b(bJ),0]],aV6=[0,b(mv),77,5,81,24,[0,b(gw),[0,b(gr),[0,b(d9),[0,b(ay),[0,b(aa),[0,b(ad),0]]]]]]],aV7=[0,b(bF),42,12,42,31,[0,b(bJ),0]],aV5=[0,b(bF),42,12,42,31,[0,b(bJ),0]],aV8=[0,b(bF),42,12,42,31,[0,b(bJ),0]],aV4=[0,b(bF),42,12,42,31,[0,b(bJ),0]],aV0=[0,b(q7),62,18,62,41,[0,b(xw),[0,b(eU),[0,b(gH),[0,b(dX),[0,b(c5),[0,b(ad),0]]]]]]],aVY=b(oN),aVZ=b(n0),aV1=[0,b(bF),44,11,44,27,[0,b(bJ),0]],aVX=[0,b(q7),31,14,31,30,[0,b(lZ),[0,b(nQ),[0,b(d9),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],aVV=b(oN),aVW=b(n0),aVK=[5,0],aVL=[4,0],aVM=[3,0],aVN=[2,0],aVO=[1,0],aVP=[0,0],aVQ=[0,b(mv),dR,5,wV,30,[0,b(CE),[0,b(ys),[0,b(kc),[0,b(dX),[0,b(aa),[0,b(ad),0]]]]]]],aVR=[0,b(bF),46,12,46,35,[0,b(bJ),0]],aVJ=[0,b(bF),46,12,46,35,[0,b(bJ),0]],aVD=[0,b(bF),53,14,53,28,[0,b(bJ),0]],aVz=[0,b(bF),54,14,54,32,[0,b(bJ),0]],aVv=[0,b(q7),21,14,21,26,[0,b(lZ),[0,b(nQ),[0,b(d9),[0,b(ay),[0,b(c5),[0,b(ad),0]]]]]]],aVw=[0,b(bF),45,12,45,24,[0,b(bJ),0]],aVu=[0,b(bF),45,12,45,24,[0,b(bJ),0]],aVx=[0,b(cp),[0,b(y3),0]],aVA=[0,b(bF),54,14,54,32,[0,b(bJ),0]],aVB=[0,b(cp),[0,b(E7),0]],aVy=[0,b(bF),54,14,54,32,[0,b(bJ),0]],aVE=[0,b(bF),53,14,53,28,[0,b(bJ),0]],aVF=[0,b(cp),[0,b(Dz),0]],aVC=[0,b(bF),53,14,53,28,[0,b(bJ),0]],aVG=[0,b(cp),[0,b(f8),[0,b(hi),0]]],aVH=[0,b(cp),[0,b(f8),[0,b(hi),0]]],aVS=[0,b(bF),46,12,46,35,[0,b(bJ),0]],aVI=[0,b(bF),46,12,46,35,[0,b(bJ),0]],aVT=[0,b(cp),[0,b(u$),0]],aV2=[0,b(bF),44,11,44,27,[0,b(bJ),0]],aVU=[0,b(bF),44,11,44,27,[0,b(bJ),0]],aV3=[0,b(cp),[0,b(Ae),0]],aV9=[0,b(cp),[0,b(iO),0]],aWg=[0,b(cp),[0,b(dj),0]],aVp=[0,b(E),rY,14,rY,32,[0,b(mD),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aVn=b(cF),aVo=b(o),aVi=[0,b(E),854,6,c7,35,[0,b("Article R822-20"),[0,b("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aVj=[0,b(e),h7,12,h7,39,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVh=[0,b(E),kG,14,kG,41,[0,b(l6),[0,b(l8),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aVd=[0,b(E),F5,14,F5,32,[0,b("Article R822-8"),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aVc=b(o),aU8=[0,b(E),ii,14,ii,65,[0,b(mD),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aU4=[0,b(E),yX,14,yX,33,[0,b("Article R822-10"),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aUV=b(o),aUW=b(o),aU1=b(X),aU2=b("90100"),aU3=b("135000"),aUX=b(o),aUY=b(o),aUZ=b(o),aU0=b(o),aUR=[0,b(E),Br,14,Br,62,[0,b(l6),[0,b(l8),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aUQ=b(o),aUM=[0,b(e),iU,51,iU,57,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUI=[0,b(Q),11,14,11,41,[0,b("Article 3"),[0,b(xx),[0,b(L),0]]]],aUH=b("9500"),aUD=[0,b(Q),21,14,21,41,[0,b("Article 4"),[0,b(xx),[0,b(L),0]]]],aUC=b("258900"),aUy=[0,b(e),Cw,46,Cw,52,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUz=[0,b(e),oT,10,oT,15,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUx=[0,b(e),oT,10,oT,15,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUA=[0,b(dT),[0,b(CR),0]],aUE=[0,b(e),my,11,my,38,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUB=[0,b(e),my,11,my,38,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUF=[0,b(dT),[0,b("montant_forfaitaire_r_822_8"),0]],aUJ=[0,b(e),nT,11,nT,38,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUG=[0,b(e),nT,11,nT,38,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUK=[0,b(dT),[0,b("montant_forfaitaire_r_822_7"),0]],aUN=[0,b(e),iU,11,iU,42,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUL=[0,b(e),iU,11,iU,42,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUO=[0,b(dT),[0,b("ressources_forfaitaires_r822_20"),0]],aUS=[0,b(e),nx,11,nx,59,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUP=[0,b(e),nx,11,nx,59,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUT=[0,b(dT),[0,b("ressources_personnes_vivant_habituellement_foyer"),0]],aU5=[0,b(e),iK,11,iK,30,[0,b(b9),[0,b(i),[0,b(f),0]]]],aUU=[0,b(e),iK,11,iK,30,[0,b(b9),[0,b(i),[0,b(f),0]]]],aU6=[0,b(dT),[0,b("abattement_r_822_10"),0]],aU9=[0,b(E),ii,14,ii,65,[0,b(mD),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aU_=[0,b(dT),[0,b(DQ),0]],aU7=[0,b(E),ii,14,ii,65,[0,b(mD),[0,b(iv),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aU$=[0,b(dT),[0,b(mS),[0,b(f4),0]]],aVa=[0,b(dT),[0,b(mS),[0,b(f4),0]]],aVe=[0,b(e),l1,11,l1,29,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVb=[0,b(e),l1,11,l1,29,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVf=[0,b(dT),[0,b("abattement_r_822_8"),0]],aVk=[0,b(e),h7,12,h7,39,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVg=[0,b(e),h7,12,h7,39,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVl=[0,b(dT),[0,b("ressources_prises_en_compte"),0]],aVq=[0,b(e),mx,11,mx,29,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVm=[0,b(e),mx,11,mx,29,[0,b(b9),[0,b(i),[0,b(f),0]]]],aVr=[0,b(dT),[0,b("abattement_r_822_7"),0]],aVs=[0,b(E),dg,13,Dh,74,[0,b(l6),[0,b(l8),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aVt=[0,b(E),dg,13,Dh,74,[0,b(l6),[0,b(l8),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aUn=[0,b(e),sh,14,sh,56,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUj=[0,b(e),DJ,14,DJ,63,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUh=b(b0),aUi=b(b0),aUd=[0,b(E),qr,14,qr,49,[0,b(kk),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aT$=[0,b(aT),[0,b(kS),[0,b(ai),0]]],aUa=[0,b(aT),[0,b(kS),0]],aUb=[0,b(aT),[0,b(kS),[0,b(ac),0]]],aUc=[0,b(aT),[0,b(kS),0]],aT5=b(Dg),aT4=[0,b(E),1213,4,1219,48,[0,b(kk),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aT6=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTZ=[0,b(aT),[0,b(fb),[0,b(ai),0]]],aT0=[0,b(aT),[0,b(fb),0]],aT1=[0,b(aT),[0,b(fb),[0,b(ac),0]]],aT2=[0,b(aT),[0,b(fb),0]],aT3=[0,b(E),xW,5,xW,44,[0,b(kk),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aT7=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTX=[0,b(E),1149,5,ff,44,[0,b(kk),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aTY=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTW=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aT8=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTV=[0,b(e),dV,11,dV,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTQ=b(Dg),aTR=[0,0],aTP=[0,b(E),1173,5,1189,10,[0,b(kk),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aTS=[0,b(e),fk,12,fk,30,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTO=[0,b(e),fk,12,fk,30,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTT=[0,b(e),fk,12,fk,30,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTN=[0,b(e),fk,12,fk,30,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTJ=[0,b(e),rS,5,vk,25,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTK=[0,b(e),fA,12,fA,23,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTI=[0,b(e),fA,12,fA,23,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTE=[0,b(c6),f9,14,f9,31,[0,b("Article L351-8"),[0,b("Section 5 : Taux et montant de la pension"),[0,b("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,b("Titre V : Assurance vieillesse - Assurance veuvage"),[0,b("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,b(aa),[0,b(ad),0]]]]]]]],aTy=[0,b(aG),72,5,73,52,[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]],aTz=[0,b(e),dy,11,dy,31,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTx=[0,b(aG),65,5,68,52,[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]],aTA=[0,b(e),dy,11,dy,31,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTw=[0,b(e),dy,11,dy,31,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTp=[0,b(aG),hT,18,hT,75,[0,b(mC),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aTo=b(o),aTq=[0,b(e),dD,11,dD,36,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTl=[5,0],aTm=[4,0],aTn=[0,b(aG),vA,18,As,45,[0,b(mC),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aTk=b(o),aTr=[0,b(e),dD,11,dD,36,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTj=[0,b(E),iG,5,iG,58,[0,b(EU),[0,b(Ee),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aTs=[0,b(e),dD,11,dD,36,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTi=[0,b(aG),l9,33,l9,58,[0,b(mC),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aTh=b(o),aTd=[0,b(c6),fe,14,fe,32,[0,b(kl),[0,b(j5),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]]]]],aS_=[0,b(aG),FP,18,FP,44,[0,b("Article L822-10"),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aS$=[0,b(e),fl,11,fl,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aS9=[0,b(e),fl,11,fl,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aS2=b(b0),aS1=b(b0),aS0=[0,b(aG),171,5,rz,65,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aS3=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSZ=[0,b(aG),156,5,c2,30,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aS4=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSY=[0,b(aG),fe,5,wV,33,[0,b(F2),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aS5=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSX=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSR=[0,b(aG),203,5,208,39,[0,b(DM),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aSS=[0,b(e),d4,11,d4,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSQ=[0,b(aG),197,5,198,34,[0,b(DM),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aST=[0,b(e),d4,11,d4,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSP=[0,b(e),d4,11,d4,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSK=[0,b(c6),329,5,330,34,[0,b(rR),[0,b(ry),[0,b(rZ),[0,b(qI),[0,b(rl),[0,b(a7),[0,b(ad),0]]]]]]]],aSJ=b("999840"),aSL=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSH=[0,b(c6),qC,5,sh,34,[0,b(rR),[0,b(ry),[0,b(rZ),[0,b(qI),[0,b(rl),[0,b(a7),[0,b(ad),0]]]]]]]],aSG=b("1041840"),aSI=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSE=[0,b(c6),339,5,340,34,[0,b(rR),[0,b(ry),[0,b(rZ),[0,b(qI),[0,b(rl),[0,b(a7),[0,b(ad),0]]]]]]]],aSD=b("1083840"),aSF=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSB=[0,b(e7),58,5,59,33,[0,b('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,b(r8),0]]],aSA=b("1153302"),aSC=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSy=[0,b(e7),90,5,91,33,[0,b('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,b(r8),0]]],aSx=b("1100144"),aSz=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSv=[0,b(e7),dx,5,kG,33,[0,b('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,b(r8),0]]],aSu=b("1088175"),aSw=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSp=[0,b(aG),c1,5,h$,67,[0,b(F2),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aSq=[0,b(e),fX,11,fX,32,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSo=[0,b(e),fX,11,fX,32,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSk=[0,b(aG),v8,14,v8,40,[0,b(mC),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aSe=[0,b(c6),dx,14,dx,61,[0,b(kl),[0,b(j5),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]]]]],aR_=[0,b(aG),46,5,46,41,[0,b("Article L821-2"),[0,b(z0),[0,b(EX),[0,b(yj),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]]]],aR$=[0,b(e),dk,12,dk,51,[0,b(Z),[0,b(i),[0,b(f),0]]]],aR9=[0,b(e),dk,12,dk,51,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSa=[0,b(e),dk,12,dk,51,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRN=b(z),aRZ=b(X),aR0=b(X),aR1=b(X),aR2=b(z),aR3=b(X),aRO=b(qy),aRP=b(qy),aRU=b(l4),aRV=b(l4),aRW=b(l4),aRX=b(qy),aRY=b(l4),aRQ=b("8"),aRR=b(CD),aRS=b(CD),aRT=[0,b(E),1035,5,gO,65,[0,b("Article R822-25"),[0,b("Section 3 : Conditions relatives au logement"),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aR4=[0,b(e),ea,12,ea,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRM=[0,b(e),ea,12,ea,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aR5=[0,b(e),ea,12,ea,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRH=[0,b(aG),E0,18,E0,67,[0,b("Article L822-8"),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aRI=[0,b(e),fF,11,fF,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRG=[0,b(e),fF,11,fF,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRB=[0,b(aG),B9,18,B9,61,[0,b("Article L822-9"),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aRC=[0,b(e),fU,11,fU,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRA=[0,b(e),fU,11,fU,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRw=[0,b(aG),o4,14,o4,43,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aRs=[0,b(E),D1,14,D1,37,[0,b(EU),[0,b(Ee),[0,b(dA),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aRr=b("3000000"),aRn=[0,b(E),a8,14,a8,41,[0,b(Fy),[0,b(Bt),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aRm=b(DK),aRi=[0,b(E),bd,14,bd,42,[0,b(Fy),[0,b(Bt),[0,b(bc),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aRh=b(DK),aRd=[0,b(e),hV,11,hV,48,[0,b(Z),[0,b(i),[0,b(f),0]]]],aQ$=[0,b(e),hF,11,hF,25,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRa=[0,b(e),hF,11,hF,25,[0,b(Z),[0,b(i),[0,b(f),0]]]],aQ_=[0,b(e),hF,11,hF,25,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRb=[0,b(aT),[0,b("condition_pr\xc3\xaat"),0]],aRe=[0,b(e),hV,11,hV,48,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRc=[0,b(e),hV,11,hV,48,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRf=[0,b(aT),[0,b("condition_peuplement_logement_l822_10"),0]],aRj=[0,b(e),os,11,os,39,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRg=[0,b(e),os,11,os,39,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRk=[0,b(aT),[0,b("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aRo=[0,b(e),nD,11,nD,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRl=[0,b(e),nD,11,nD,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRp=[0,b(aT),[0,b("seuil_l822_3_parts_usufruit"),0]],aRt=[0,b(e),oY,11,oY,34,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRq=[0,b(e),oY,11,oY,34,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRu=[0,b(aT),[0,b("seuil_l822_5_patrimoine"),0]],aRx=[0,b(e),l7,11,l7,40,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRv=[0,b(e),l7,11,l7,40,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRy=[0,b(aT),[0,b("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aRD=[0,b(e),fU,11,fU,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRz=[0,b(e),fU,11,fU,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRE=[0,b(aT),[0,b("condition_non_ouverture_l822_9_decence_logement"),0]],aRJ=[0,b(e),fF,11,fF,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRF=[0,b(e),fF,11,fF,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRK=[0,b(aT),[0,b("condition_non_ouverture_l822_8"),0]],aR6=[0,b(e),ea,12,ea,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aRL=[0,b(e),ea,12,ea,38,[0,b(Z),[0,b(i),[0,b(f),0]]]],aR7=[0,b(aT),[0,b("condition_logement_surface"),0]],aSb=[0,b(e),dk,12,dk,51,[0,b(Z),[0,b(i),[0,b(f),0]]]],aR8=[0,b(e),dk,12,dk,51,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSc=[0,b(aT),[0,b("condition_logement_r\xc3\xa9sidence_principale"),0]],aSf=[0,b(c6),dx,14,dx,61,[0,b(kl),[0,b(j5),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]]]]],aSg=[0,b(aT),[0,b("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSd=[0,b(c6),dx,14,dx,61,[0,b(kl),[0,b(j5),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]]]]],aSh=[0,b(aT),[0,b(CA),[0,b(rG),0]]],aSi=[0,b(aT),[0,b(CA),[0,b(rG),0]]],aSl=[0,b(e),mj,11,mj,37,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSj=[0,b(e),mj,11,mj,37,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSm=[0,b(aT),[0,b("patrimoine_total_demandeur"),0]],aSr=[0,b(e),fX,11,fX,32,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSn=[0,b(e),fX,11,fX,32,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSs=[0,b(aT),[0,b("condition_nationalit\xc3\xa9"),0]],aSM=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSt=[0,b(e),cR,11,cR,41,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSN=[0,b(aT),[0,b("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aSU=[0,b(e),d4,11,d4,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSO=[0,b(e),d4,11,d4,44,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSV=[0,b(aT),[0,b("condition_logement_location_tiers"),0]],aS6=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aSW=[0,b(e),dZ,11,dZ,45,[0,b(Z),[0,b(i),[0,b(f),0]]]],aS7=[0,b(aT),[0,b("condition_logement_mode_occupation"),0]],aTa=[0,b(e),fl,11,fl,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aS8=[0,b(e),fl,11,fl,58,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTb=[0,b(aT),[0,b("condition_ouverture_l822_10_peuplement_logement"),0]],aTe=[0,b(e),mp,11,mp,29,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTc=[0,b(e),mp,11,mp,29,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTf=[0,b(aT),[0,b("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aTt=[0,b(e),dD,11,dD,36,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTg=[0,b(e),dD,11,dD,36,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTu=[0,b(aT),[0,b("patrimoine_pris_en_compte"),0]],aTB=[0,b(e),dy,11,dy,31,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTv=[0,b(e),dy,11,dy,31,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTC=[0,b(aT),[0,b(A_),0]],aTF=[0,b(e),h9,11,h9,28,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTD=[0,b(e),h9,11,h9,28,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTG=[0,b(aT),[0,b("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aTL=[0,b(e),fA,12,fA,23,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTH=[0,b(e),fA,12,fA,23,[0,b(Z),[0,b(i),[0,b(f),0]]]],aTM=[0,b(aT),[0,b(n6),0]],aTU=[0,b(aT),[0,b(fb),0]],aT9=[0,b(aT),[0,b(kS),0]],aUe=[0,b(e),k1,11,k1,46,[0,b(Z),[0,b(i),[0,b(f),0]]]],aT_=[0,b(e),k1,11,k1,46,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUf=[0,b(aT),[0,b("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aUk=[0,b(e),oy,12,oy,61,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUg=[0,b(e),oy,12,oy,61,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUl=[0,b(aT),[0,b(kH),0]],aUo=[0,b(e),n2,12,n2,54,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUm=[0,b(e),n2,12,n2,54,[0,b(Z),[0,b(i),[0,b(f),0]]]],aUp=[0,b(aT),[0,b(r3),0]],aUr=b(qt),aUq=[0,b(aG),mu,13,mu,47,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aUv=[0,b(aG),mu,13,mu,47,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aUt=b(qt),aUs=[0,b(aG),jq,13,jq,48,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aUu=[0,b(aG),jq,13,jq,48,[0,b(go),[0,b(bc),[0,b(ab),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],aQ7=[0,b(E),Dm,14,Dm,36,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQ2=[0,b(aj),[0,b(bI),[0,b(ai),0]]],aQ3=[0,b(aj),[0,b(bI),0]],aQ4=[0,b(aj),[0,b(bI),[0,b(ac),0]]],aQ5=[0,b(aj),[0,b(bI),0]],aQ6=b(o),aQ8=[0,b(e),kP,10,kP,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQ1=[0,b(e),kP,10,kP,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQY=[0,b(E),yJ,14,yJ,33,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQW=b(o),aQX=b(o),aQS=[0,b(E),wN,14,wN,36,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQH=[0,b(aj),[0,b(eH),[0,b(ai),0]]],aQI=[0,b(aj),[0,b(eH),0]],aQJ=[0,b(aj),[0,b(eH),[0,b(ac),0]]],aQK=[0,b(aj),[0,b(eH),0]],aQL=[0,b(bj),[0,b(bO),[0,b(ai),0]]],aQM=[0,b(bj),[0,b(bO),0]],aQN=[0,b(bj),[0,b(bO),[0,b(ac),0]]],aQO=[0,b(bj),[0,b(bO),0]],aQP=b(k2),aQQ=b(o),aQR=b(o),aQT=[0,b(e),np,10,np,40,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQG=[0,b(e),np,10,np,40,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQD=[0,b(E),Fj,14,Fj,49,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQB=b(g$),aQC=b(g$),aQx=[0,b(E),uV,14,uV,33,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQt=[0,b(E),yE,14,yE,36,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQj=[0,b(aj),[0,b(bH),[0,b(ai),0]]],aQk=[0,b(aj),[0,b(bH),0]],aQl=[0,b(aj),[0,b(bH),[0,b(ac),0]]],aQm=[0,b(aj),[0,b(bH),0]],aQn=[0,b(aj),[0,b(kT),[0,b(ai),0]]],aQo=[0,b(aj),[0,b(kT),0]],aQp=[0,b(aj),[0,b(kT),[0,b(ac),0]]],aQq=[0,b(aj),[0,b(kT),0]],aQr=b(o),aQs=b(o),aQu=[0,b(e),n5,10,n5,20,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQi=[0,b(e),n5,10,n5,20,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQf=[0,b(E),yd,14,yd,49,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aQc=b(c3),aQd=b(c3),aQe=b(l3),aP9=[0,b(E),3426,5,3438,77,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aP7=b(cF),aP8=b(b0),aP_=[0,b(e),fO,12,fO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aP5=[0,b(E),Do,5,Do,75,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aP6=[0,b(e),fO,12,fO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPY=[0,b(aN),DA,14,DA,42,[0,b(i3),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aPX=b(dh),aPZ=[0,b(e),ex,10,ex,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPW=[0,b(aN),vr,14,vr,42,[0,b(i3),[0,b(bA),[0,b(aL),0]]]],aPV=b(dh),aP0=[0,b(e),ex,10,ex,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPU=[0,b(Q),xd,14,xd,42,[0,b(i3),[0,b(aP),[0,b(L),0]]]],aPT=b(dh),aP1=[0,b(e),ex,10,ex,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPP=[0,b(E),Es,14,Es,55,[0,b(rJ),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPK=[0,b(aj),[0,b(kx),[0,b(ai),0]]],aPL=[0,b(aj),[0,b(kx),0]],aPM=[0,b(aj),[0,b(kx),[0,b(ac),0]]],aPN=[0,b(aj),[0,b(kx),0]],aPO=b(o),aPQ=[0,b(e),oG,11,oG,52,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPJ=[0,b(e),oG,11,oG,52,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPG=[0,b(E),Ao,14,Ao,49,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPF=b(g$),aPz=[0,b(E),jj,14,jj,70,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPv=[0,b(E),jh,14,jh,69,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPr=[0,b(E),h3,14,h3,75,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPm=[0,b(E),zU,5,zU,44,[0,b(Bg),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPe=[0,b(aj),[0,b(dz),[0,b(ai),0]]],aPf=[0,b(aj),[0,b(dz),0]],aPg=[0,b(aj),[0,b(dz),[0,b(ac),0]]],aPh=[0,b(aj),[0,b(dz),0]],aPi=[0,b(aj),[0,b(dz),[0,b(ai),0]]],aPj=[0,b(aj),[0,b(dz),0]],aPk=[0,b(aj),[0,b(dz),[0,b(ac),0]]],aPl=[0,b(aj),[0,b(dz),0]],aPn=[0,b(e),gD,10,gD,14,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPd=[0,b(E),Cm,14,Cm,42,[0,b(Bg),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aO$=[0,b(aj),[0,b(dz),[0,b(ai),0]]],aPa=[0,b(aj),[0,b(dz),0]],aPb=[0,b(aj),[0,b(dz),[0,b(ac),0]]],aPc=[0,b(aj),[0,b(dz),0]],aO6=[0,b(E),xq,5,xq,40,[0,b(rJ),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aO7=[0,b(e),i8,11,i8,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO5=[0,b(E),DY,14,DY,44,[0,b(rJ),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aO8=[0,b(e),i8,11,i8,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO4=[0,b(e),i8,11,i8,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO1=[0,b(E),zB,14,zB,36,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aOV=[0,b(Q),gA,5,gJ,36,[0,b(aP),[0,b(L),0]]],aOP=b(o),aOQ=b("86900"),aOR=b("97100"),aOS=b(z),aOT=b("10200"),aOU=b("107300"),aOW=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aOM=[0,b(Q),1061,5,gs,36,[0,b(aP),[0,b(L),0]]],aOu=b(o),aOv=b(w1),aOw=b(vM),aOx=b(z),aOy=b(F_),aOz=b(yK),aOA=b(o),aOB=b(AE),aOC=b(Eo),aOD=b(z),aOE=b(v6),aOF=b(z_),aOG=b(o),aOH=b(zb),aOI=b(EM),aOJ=b(z),aOK=b("34600"),aOL=b(mm),aON=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aOs=[0,b(Q),gt,5,gv,36,[0,b(aP),[0,b(L),0]]],aOa=b(o),aOb=b(yp),aOc=b(rI),aOd=b(z),aOe=b(F$),aOf=b(Ce),aOg=b(o),aOh=b(EC),aOi=b(q_),aOj=b(z),aOk=b(om),aOl=b(Al),aOm=b(o),aOn=b(DN),aOo=b(Fk),aOp=b(z),aOq=b(Dn),aOr=b(xX),aOt=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aN_=[0,b(Q),sr,5,1131,36,[0,b(aP),[0,b(L),0]]],aNS=b(o),aNT=b("198100"),aNU=b("239000"),aNV=b(z),aNW=b("40900"),aNX=b("279900"),aNY=b(o),aNZ=b("176800"),aN0=b("212800"),aN1=b(z),aN2=b("36000"),aN3=b("248800"),aN4=b(o),aN5=b("165000"),aN6=b("197900"),aN7=b(z),aN8=b("32900"),aN9=b("230800"),aN$=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aNQ=[0,b(Q),1160,5,1164,36,[0,b(aP),[0,b(L),0]]],aNy=b(o),aNz=b("159500"),aNA=b(wu),aNB=b(z),aNC=b("33000"),aND=b(yB),aNE=b(o),aNF=b("142200"),aNG=b("171200"),aNH=b(z),aNI=b("29000"),aNJ=b("200200"),aNK=b(o),aNL=b("132800"),aNM=b("159300"),aNN=b(z),aNO=b("26500"),aNP=b(ym),aNR=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aNw=[0,b(Q),qY,5,Ga,36,[0,b(aP),[0,b(L),0]]],aNe=b(o),aNf=b("200100"),aNg=b("141400"),aNh=b(z),aNi=b("41300"),aNj=b("182700"),aNk=b(o),aNl=b("178600"),aNm=b("215000"),aNn=b(z),aNo=b("36400"),aNp=b("251400"),aNq=b(o),aNr=b("166700"),aNs=b(qX),aNt=b(z),aNu=b("33200"),aNv=b("233100"),aNx=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aNc=[0,b(Q),1226,5,1230,36,[0,b(aP),[0,b(L),0]]],aMW=b(o),aMX=b("161100"),aMY=b("194400"),aMZ=b(z),aM0=b("33300"),aM1=b("227700"),aM2=b(o),aM3=b("143600"),aM4=b("172900"),aM5=b(z),aM6=b("29300"),aM7=b("202200"),aM8=b(o),aM9=b("134100"),aM_=b("160900"),aM$=b(z),aNa=b("26800"),aNb=b("187700"),aNd=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aMU=[0,b(Q),1259,5,1263,36,[0,b(aP),[0,b(L),0]]],aMC=b(o),aMD=b(rI),aME=b("244300"),aMF=b(z),aMG=b("41800"),aMH=b("286100"),aMI=b(o),aMJ=b("180700"),aMK=b("217500"),aML=b(z),aMM=b("36800"),aMN=b("254300"),aMO=b(o),aMP=b("168700"),aMQ=b("202300"),aMR=b(z),aMS=b("33600"),aMT=b("235900"),aMV=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aMA=[0,b(Q),1292,5,1296,36,[0,b(aP),[0,b(L),0]]],aMi=b(o),aMj=b("30871"),aMk=b("37243"),aMl=b(z),aMm=b("6372"),aMn=b("43615"),aMo=b(o),aMp=b("27548"),aMq=b("33148"),aMr=b(z),aMs=b("5610"),aMt=b("38768"),aMu=b(o),aMv=b("25718"),aMw=b("30840"),aMx=b(z),aMy=b("5122"),aMz=b("35962"),aMB=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aMg=[0,b(Q),1325,5,1329,36,[0,b(aP),[0,b(L),0]]],aL0=b(o),aL1=b(xI),aL2=b("196700"),aL3=b(z),aL4=b("33700"),aL5=b("230400"),aL6=b(o),aL7=b("145300"),aL8=b("175000"),aL9=b(z),aL_=b("29700"),aL$=b(C1),aMa=b(o),aMb=b("135700"),aMc=b("162800"),aMd=b(z),aMe=b("27100"),aMf=b("189900"),aMh=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aLY=[0,b(Q),1358,5,1362,36,[0,b(aP),[0,b(L),0]]],aLG=b(o),aLH=b("24849"),aLI=b("29987"),aLJ=b(z),aLK=b("5138"),aLL=b("35125"),aLM=b(o),aLN=b("22151"),aLO=b("26679"),aLP=b(z),aLQ=b("4528"),aLR=b("31207"),aLS=b(o),aLT=b("20687"),aLU=b("24818"),aLV=b(z),aLW=b("4131"),aLX=b("28949"),aLZ=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aLE=[0,b(Q),1391,5,sj,36,[0,b(aP),[0,b(L),0]]],aLm=b(o),aLn=b("31241"),aLo=b("37689"),aLp=b(z),aLq=b("6448"),aLr=b("44137"),aLs=b(o),aLt=b("27879"),aLu=b("33556"),aLv=b(z),aLw=b("5677"),aLx=b("39233"),aLy=b(o),aLz=b("26027"),aLA=b("31210"),aLB=b(z),aLC=b("5183"),aLD=b("36393"),aLF=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aLk=[0,b(Q),qW,5,1428,36,[0,b(aP),[0,b(L),0]]],aK4=b(o),aK5=b("25147"),aK6=b("30347"),aK7=b(z),aK8=b("5200"),aK9=b("35547"),aK_=b(o),aK$=b("22417"),aLa=b("26999"),aLb=b(z),aLc=b("4582"),aLd=b("31581"),aLe=b(o),aLf=b("20935"),aLg=b(Cg),aLh=b(z),aLi=b("4181"),aLj=b("29297"),aLl=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aK2=[0,b(Q),1457,5,1461,36,[0,b(aP),[0,b(L),0]]],aKK=b(o),aKL=b("31616"),aKM=b("38141"),aKN=b(z),aKO=b("6525"),aKP=b("44666"),aKQ=b(o),aKR=b("28214"),aKS=b("33959"),aKT=b(z),aKU=b("5745"),aKV=b("39704"),aKW=b(o),aKX=b("26339"),aKY=b("31584"),aKZ=b(z),aK0=b("5245"),aK1=b("36829"),aK3=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aKI=[0,b(Q),1490,5,1494,36,[0,b(aP),[0,b(L),0]]],aKq=b(o),aKr=b("25449"),aKs=b("30711"),aKt=b(z),aKu=b("5262"),aKv=b("35973"),aKw=b(o),aKx=b("22686"),aKy=b("27323"),aKz=b(z),aKA=b("4637"),aKB=b("31960"),aKC=b(o),aKD=b("21186"),aKE=b("25417"),aKF=b(z),aKG=b("4231"),aKH=b("29648"),aKJ=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aKo=[0,b(Q),1523,5,1527,36,[0,b(aP),[0,b(L),0]]],aJ8=b(o),aJ9=b("32185"),aJ_=b("38827"),aJ$=b(z),aKa=b("6642"),aKb=b("45469"),aKc=b(o),aKd=b("28722"),aKe=b(x6),aKf=b(z),aKg=b("5848"),aKh=b("40418"),aKi=b(o),aKj=b("26813"),aKk=b("32152"),aKl=b(z),aKm=b("5339"),aKn=b("37491"),aKp=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aJ6=[0,b(Q),zq,5,1560,36,[0,b(aP),[0,b(L),0]]],aJO=b(o),aJP=b("25907"),aJQ=b(xr),aJR=b(z),aJS=b("5357"),aJT=b("36621"),aJU=b(o),aJV=b("23094"),aJW=b("27814"),aJX=b(z),aJY=b("4720"),aJZ=b("32534"),aJ0=b(o),aJ1=b("21567"),aJ2=b("25874"),aJ3=b(z),aJ4=b("4307"),aJ5=b("30181"),aJ7=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aJM=[0,b(Q),1589,5,1593,36,[0,b(aP),[0,b(L),0]]],aJu=b(o),aJv=b("33086"),aJw=b("39914"),aJx=b(z),aJy=b("6828"),aJz=b("46742"),aJA=b(o),aJB=b("29526"),aJC=b("35538"),aJD=b(z),aJE=b("6012"),aJF=b("41550"),aJG=b(o),aJH=b("27564"),aJI=b("33052"),aJJ=b(z),aJK=b("5488"),aJL=b("38541"),aJN=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aJs=[0,b(Q),1622,5,Dd,36,[0,b(aP),[0,b(L),0]]],aJa=b(o),aJb=b("26632"),aJc=b("32139"),aJd=b(z),aJe=b("5507"),aJf=b("37646"),aJg=b(o),aJh=b("23741"),aJi=b("28593"),aJj=b(z),aJk=b("4852"),aJl=b("33445"),aJm=b(o),aJn=b("22171"),aJo=b("36598"),aJp=b(z),aJq=b("4428"),aJr=b("31026"),aJt=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aI_=[0,b(Q),1655,5,1659,36,[0,b(aP),[0,b(L),0]]],aIS=b(o),aIT=b("33999"),aIU=b("41016"),aIV=b(z),aIW=b("7016"),aIX=b("48032"),aIY=b(o),aIZ=b("30341"),aI0=b("36519"),aI1=b(z),aI2=b("6178"),aI3=b("42697"),aI4=b(o),aI5=b("28325"),aI6=b("33964"),aI7=b(z),aI8=b("5639"),aI9=b("39605"),aI$=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aIQ=[0,b(Q),1688,5,1692,36,[0,b(aP),[0,b(L),0]]],aIy=b(o),aIz=b("27367"),aIA=b("33026"),aIB=b(z),aIC=b("5659"),aID=b("38685"),aIE=b(o),aIF=b("24396"),aIG=b("29382"),aIH=b(z),aII=b(B4),aIJ=b("34368"),aIK=b(o),aIL=b("22783"),aIM=b("27332"),aIN=b(z),aIO=b("4550"),aIP=b("31882"),aIR=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aIw=[0,b(Q),1721,5,1725,36,[0,b(aP),[0,b(L),0]]],aIe=b(o),aIf=b("35002"),aIg=b("42226"),aIh=b(z),aIi=b("7223"),aIj=b("49449"),aIk=b(o),aIl=b("31236"),aIm=b("37596"),aIn=b(z),aIo=b("6360"),aIp=b("43957"),aIq=b(o),aIr=b("29161"),aIs=b("34966"),aIt=b(z),aIu=b("5805"),aIv=b("40773"),aIx=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aIc=[0,b(Q),1754,5,1758,36,[0,b(aP),[0,b(L),0]]],aHW=b(o),aHX=b("28174"),aHY=b("34000"),aHZ=b(z),aH0=b("5826"),aH1=b("39826"),aH2=b(o),aH3=b(Cg),aH4=b("30249"),aH5=b(z),aH6=b("5133"),aH7=b("35382"),aH8=b(o),aH9=b("23455"),aH_=b("28138"),aH$=b(z),aIa=b("4684"),aIb=b("32823"),aId=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aHU=[0,b(Q),1787,5,1791,36,[0,b(aP),[0,b(L),0]]],aHC=b(o),aHD=b("35114"),aHE=b("42361"),aHF=b(z),aHG=b("7246"),aHH=b("49607"),aHI=b(o),aHJ=b("31336"),aHK=b("37716"),aHL=b(z),aHM=b("6380"),aHN=b("44098"),aHO=b(o),aHP=b("29254"),aHQ=b("35078"),aHR=b(z),aHS=b("5824"),aHT=b("40903"),aHV=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aHA=[0,b(Q),1820,5,1824,36,[0,b(aP),[0,b(L),0]]],aHi=b(o),aHj=b("28264"),aHk=b("34109"),aHl=b(z),aHm=b("5845"),aHn=b("39953"),aHo=b(o),aHp=b("25196"),aHq=b("30346"),aHr=b(z),aHs=b("5149"),aHt=b("35495"),aHu=b(o),aHv=b("23530"),aHw=b("28228"),aHx=b(z),aHy=b("4699"),aHz=b("32928"),aHB=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aHg=[0,b(Q),1853,5,1857,36,[0,b(aP),[0,b(L),0]]],aG0=b(o),aG1=b("35500"),aG2=b("42827"),aG3=b(z),aG4=b("7326"),aG5=b("50153"),aG6=b(o),aG7=b("31681"),aG8=b("38131"),aG9=b(z),aG_=b("6450"),aG$=b("44583"),aHa=b(o),aHb=b("29576"),aHc=b("35464"),aHd=b(z),aHe=b("5888"),aHf=b("41353"),aHh=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aGY=[0,b(Q),1886,5,1890,36,[0,b(aP),[0,b(L),0]]],aGG=b(o),aGH=b("28575"),aGI=b("34484"),aGJ=b(z),aGK=b("5909"),aGL=b("40392"),aGM=b(o),aGN=b("25473"),aGO=b("30680"),aGP=b(z),aGQ=b("5206"),aGR=b("35885"),aGS=b(o),aGT=b("23789"),aGU=b("28539"),aGV=b(z),aGW=b("4751"),aGX=b("33290"),aGZ=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aGE=[0,b(Q),1919,5,1923,36,[0,b(aP),[0,b(L),0]]],aGm=b(o),aGn=b("35855"),aGo=b("43255"),aGp=b(z),aGq=b("7399"),aGr=b("50655"),aGs=b(o),aGt=b("31998"),aGu=b("38512"),aGv=b(z),aGw=b("6515"),aGx=b("45029"),aGy=b(o),aGz=b("29872"),aGA=b("35819"),aGB=b(z),aGC=b("5947"),aGD=b("41767"),aGF=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aGk=[0,b(Q),1952,5,1956,36,[0,b(aP),[0,b(L),0]]],aF4=b(o),aF5=b("28861"),aF6=b(EE),aF7=b(z),aF8=b("5968"),aF9=b("40796"),aF_=b(o),aF$=b("25728"),aGa=b("30987"),aGb=b(z),aGc=b("5258"),aGd=b("36244"),aGe=b(o),aGf=b("24027"),aGg=b("28824"),aGh=b(z),aGi=b("4799"),aGj=b(zD),aGl=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aF2=[0,b(Q),1985,5,1989,36,[0,b(aP),[0,b(L),0]]],aFK=b(o),aFL=b("36626"),aFM=b("44185"),aFN=b(z),aFO=b("7558"),aFP=b("51744"),aFQ=b(o),aFR=b("32686"),aFS=b(yi),aFT=b(z),aFU=b("6655"),aFV=b("45997"),aFW=b(o),aFX=b("30514"),aFY=b("36589"),aFZ=b(z),aF0=b("6075"),aF1=b("42665"),aF3=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aFI=[0,b(Q),c4,5,$,36,[0,b(aP),[0,b(L),0]]],aFq=b(o),aFr=b("29482"),aFs=b("35578"),aFt=b(z),aFu=b("6096"),aFv=b("41673"),aFw=b(o),aFx=b("26281"),aFy=b("31653"),aFz=b(z),aFA=b("5371"),aFB=b("37023"),aFC=b(o),aFD=b("24544"),aFE=b("29444"),aFF=b(z),aFG=b("4902"),aFH=b("34346"),aFJ=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aFo=[0,b(Q),2051,5,2055,36,[0,b(aP),[0,b(L),0]]],aE8=b(o),aE9=b("36835"),aE_=b("44437"),aE$=b(z),aFa=b("7601"),aFb=b("52039"),aFc=b(o),aFd=b("32872"),aFe=b("39564"),aFf=b(z),aFg=b("6693"),aFh=b("46259"),aFi=b(o),aFj=b("30688"),aFk=b("36798"),aFl=b(z),aFm=b("6110"),aFn=b("42908"),aFp=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aE6=[0,b(Q),2084,5,2088,36,[0,b(aP),[0,b(L),0]]],aEO=b(o),aEP=b("29650"),aEQ=b("35781"),aER=b(z),aES=b("6131"),aET=b("41911"),aEU=b(o),aEV=b("26431"),aEW=b("31833"),aEX=b(z),aEY=b("5402"),aEZ=b("37234"),aE0=b(o),aE1=b("24684"),aE2=b("29612"),aE3=b(z),aE4=b("4930"),aE5=b("34542"),aE7=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aEM=[0,b(Q),2117,5,2121,36,[0,b(aP),[0,b(L),0]]],aEu=b(o),aEv=b("36864"),aEw=b("44473"),aEx=b(z),aEy=b("7607"),aEz=b("52081"),aEA=b(o),aEB=b("32898"),aEC=b("39596"),aED=b(z),aEE=b("6698"),aEF=b("46296"),aEG=b(o),aEH=b("30713"),aEI=b("36827"),aEJ=b(z),aEK=b("6115"),aEL=b("42942"),aEN=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aEs=[0,b(Q),2150,5,2154,36,[0,b(aP),[0,b(L),0]]],aEa=b(o),aEb=b("29674"),aEc=b("35810"),aEd=b(z),aEe=b("6136"),aEf=b("41945"),aEg=b(o),aEh=b("26452"),aEi=b("31858"),aEj=b(z),aEk=b("5406"),aEl=b("37264"),aEm=b(o),aEn=b("24704"),aEo=b("29636"),aEp=b(z),aEq=b("4934"),aEr=b(x6),aEt=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aD_=[0,b(Q),2183,5,qZ,36,[0,b(aP),[0,b(L),0]]],aDS=b(o),aDT=b("37140"),aDU=b("44807"),aDV=b(z),aDW=b("7664"),aDX=b("52472"),aDY=b(o),aDZ=b("33145"),aD0=b("39893"),aD1=b(z),aD2=b("6748"),aD3=b("46643"),aD4=b(o),aD5=b("30943"),aD6=b("37103"),aD7=b(z),aD8=b("6161"),aD9=b("43264"),aD$=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aDQ=[0,b(Q),2216,5,2220,36,[0,b(aP),[0,b(L),0]]],aDy=b(o),aDz=b("29897"),aDA=b("36079"),aDB=b(z),aDC=b("6182"),aDD=b("42260"),aDE=b(o),aDF=b("26650"),aDG=b("32097"),aDH=b(z),aDI=b("5447"),aDJ=b("37543"),aDK=b(o),aDL=b("24889"),aDM=b("29858"),aDN=b(z),aDO=b("4971"),aDP=b(EE),aDR=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aDw=[0,b(Q),2249,5,2252,36,[0,b(aP),[0,b(L),0]]],aDe=b(o),aDf=b("37252"),aDg=b("44941"),aDh=b(z),aDi=b("7687"),aDj=b("52629"),aDk=b(o),aDl=b("33244"),aDm=b("40013"),aDn=b(z),aDo=b("6768"),aDp=b("46783"),aDq=b(o),aDr=b("31036"),aDs=b("37215"),aDt=b(z),aDu=b("6179"),aDv=b("43394"),aDx=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aDc=[0,b(Q),2281,5,2284,36,[0,b(aP),[0,b(L),0]]],aCW=b(o),aCX=b("29986"),aCY=b("36187"),aCZ=b(z),aC0=b("6201"),aC1=b("42386"),aC2=b(o),aC3=b("26730"),aC4=b("32193"),aC5=b(z),aC6=b("5463"),aC7=b("37656"),aC8=b(o),aC9=b("24964"),aC_=b("29948"),aC$=b(z),aDa=b(B4),aDb=b("34934"),aDd=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aOO=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aOX=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aCT=[0,b(Q),kK,5,kB,33,[0,b(o1),[0,b(mg),[0,b(L),0]]]],aCB=b(o),aCC=b(w1),aCD=b(vM),aCE=b(z),aCF=b(F_),aCG=b(yK),aCH=b(o),aCI=b(AE),aCJ=b(Eo),aCK=b(z),aCL=b(v6),aCM=b(z_),aCN=b(o),aCO=b(zb),aCP=b(EM),aCQ=b(z),aCR=b("35600"),aCS=b(mm),aCU=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aCz=[0,b(Q),662,5,665,33,[0,b(o1),[0,b(mg),[0,b(L),0]]]],aCh=b(o),aCi=b(yp),aCj=b(rI),aCk=b(z),aCl=b(F$),aCm=b(Ce),aCn=b(o),aCo=b(EC),aCp=b(q_),aCq=b(z),aCr=b(om),aCs=b(Al),aCt=b(o),aCu=b(DN),aCv=b(Fk),aCw=b(z),aCx=b(Dn),aCy=b(xX),aCA=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aCf=[0,b(Q),kw,5,sp,33,[0,b(o1),[0,b(mg),[0,b(L),0]]]],aBZ=b(o),aB0=b(rE),aB1=b("220000"),aB2=b(z),aB3=b("38000"),aB4=b("260000"),aB5=b(o),aB6=b("164200"),aB7=b(zj),aB8=b(z),aB9=b(FV),aB_=b("231200"),aB$=b(o),aCa=b("153200"),aCb=b("183700"),aCc=b(z),aCd=b(om),aCe=b("214200"),aCg=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBX=[0,b(Q),750,5,kf,33,[0,b(o1),[0,b(mg),[0,b(L),0]]]],aBF=b(o),aBG=b("148100"),aBH=b("178700"),aBI=b(z),aBJ=b("30600"),aBK=b("209300"),aBL=b(o),aBM=b(Bn),aBN=b("158900"),aBO=b(z),aBP=b("26900"),aBQ=b(ym),aBR=b(o),aBS=b("123300"),aBT=b("147900"),aBU=b(z),aBV=b("24600"),aBW=b(DT),aBY=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aCV=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBE=[0,b(e),Y,55,Y,61,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aOY=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBD=[0,b(e),Y,11,Y,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBz=[0,b(E),on,5,on,28,[0,b(Dy),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aBA=[0,b(e),iJ,11,iJ,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBy=[0,b(E),D8,14,D8,44,[0,b(Dy),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aBu=[0,b(E),vK,14,vK,36,[0,b(iH),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aBs=b(o),aBt=b(o),aBv=[0,b(e),m4,10,m4,32,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBr=[0,b(e),m4,10,m4,32,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBm=[0,b(Q),EI,7,EI,18,[0,b(i3),[0,b(aP),[0,b(L),0]]]],aBj=b(gu),aBk=b(qU),aBl=b(fj),aBn=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBh=[0,b(aN),zo,7,zo,18,[0,b(i3),[0,b(bA),[0,b(aL),0]]]],aBe=b(gN),aBf=b(qu),aBg=b(e_),aBi=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBc=[0,b(aN),xl,7,xl,18,[0,b(i3),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aA$=b(oE),aBa=b(BS),aBb=b(mO),aBd=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBo=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aA8=[0,b(Q),Cu,29,Cu,64,[0,b(nt),[0,b(aP),[0,b(L),0]]]],aA6=b(gu),aA7=b(fj),aA9=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aA4=[0,b(aN),Bq,29,Bq,64,[0,b(nt),[0,b(bA),[0,b(aL),0]]]],aA2=b(gN),aA3=b(e_),aA5=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aA0=[0,b(aN),yA,29,yA,64,[0,b(nt),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aAY=b(oE),aAZ=b(mO),aA1=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aA_=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAS=[0,b(e),im,14,im,50,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAO=[0,b(Q),D0,14,D0,50,[0,b("Article 25"),[0,b(aP),[0,b(L),0]]]],aAJ=b(wv),aAK=b(sc),aAL=b("0.0172"),aAM=b(wv),aAN=b(sc),aAD=[0,b(E),iB,14,iB,64,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAz=[0,b(E),iy,14,iy,59,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAv=[0,b(e7),yQ,14,yQ,36,[0,b(CZ),[0,b(y9),0]]],aAt=b(vt),aAu=b(en),aAp=[0,b(Q),E1,14,E1,47,[0,b(se),[0,b(aP),[0,b(L),0]]]],aAo=b("0.416"),aAk=[0,b(Q),x5,14,x5,47,[0,b(se),[0,b(aP),[0,b(L),0]]]],aAj=b(ve),aAf=[0,b(Q),Dp,14,Dp,47,[0,b(se),[0,b(aP),[0,b(L),0]]]],aAe=b("560085"),aAa=[0,b(Q),FR,14,FR,48,[0,b("Article 26"),[0,b(aP),[0,b(L),0]]]],az$=b(AD),az7=[0,b(Q),BW,15,BW,49,[0,b("Article 22"),[0,b(aP),[0,b(L),0]]]],az6=b("2211133"),az2=[0,b(Q),u1,14,u1,42,[0,b("Article 21"),[0,b(aP),[0,b(L),0]]]],az1=b(ib),azX=[0,b(Q),Eb,14,Eb,41,[0,b("Article 20"),[0,b(aP),[0,b(L),0]]]],azW=b(kj),azY=[0,b(e),oQ,11,oQ,38,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],azV=[0,b(e),oQ,11,oQ,38,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],azZ=[0,b(aj),[0,b("montant_forfaitaire_d832_10"),0]],az3=[0,b(e),mt,11,mt,39,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],az0=[0,b(e),mt,11,mt,39,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],az4=[0,b(aj),[0,b("montant_minimal_aide_d832_10"),0]],az8=[0,b(e),ne,11,ne,45,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],az5=[0,b(e),ne,11,ne,45,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],az9=[0,b(aj),[0,b("coefficient_multiplicateur_d832_11"),0]],aAb=[0,b(e),mY,11,mY,45,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],az_=[0,b(e),mY,11,mY,45,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAc=[0,b(aj),[0,b("coefficient_multiplicateur_d832_18"),0]],aAg=[0,b(e),kd,11,kd,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAd=[0,b(e),kd,11,kd,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAh=[0,b(aj),[0,b("montant_limite_tranches_d832_15_1"),0]],aAl=[0,b(e),nS,11,nS,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAi=[0,b(e),nS,11,nS,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAm=[0,b(aj),[0,b("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aAq=[0,b(e),mQ,11,mQ,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAn=[0,b(e),mQ,11,mQ,44,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAr=[0,b(aj),[0,b("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aAw=[0,b(e),kw,11,kw,33,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAs=[0,b(e),kw,11,kw,33,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAx=[0,b(aj),[0,b(Fx),0]],aAA=[0,b(E),iy,14,iy,59,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAB=[0,b(aj),[0,b(nf),0]],aAy=[0,b(E),iy,14,iy,59,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAE=[0,b(E),iB,14,iB,64,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAF=[0,b(aj),[0,b(n1),0]],aAC=[0,b(E),iB,14,iB,64,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aAG=[0,b(aj),[0,b(f7),[0,b(kp),0]]],aAH=[0,b(aj),[0,b(f7),[0,b(kp),0]]],aAP=[0,b(e),kX,11,kX,47,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAI=[0,b(e),kX,11,kX,47,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAQ=[0,b(aj),[0,b("coefficient_multiplicateur_d832_17_3"),0]],aAT=[0,b(e),im,14,im,50,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAU=[0,b(aj),[0,b(kA),0]],aAR=[0,b(e),im,14,im,50,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAV=[0,b(aj),[0,b(eB),[0,b(bj),0]]],aAW=[0,b(aj),[0,b(eB),[0,b(bj),0]]],aBp=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aAX=[0,b(e),ch,11,ch,46,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBq=[0,b(aj),[0,b("montant_forfaitaire_charges_d832_10"),0]],aBw=[0,b(aj),[0,b(bH),0]],aBB=[0,b(e),iJ,11,iJ,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBx=[0,b(e),iJ,11,iJ,41,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aBC=[0,b(aj),[0,b("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aOZ=[0,b(aj),[0,b(dz),0]],aO2=[0,b(e),ml,11,ml,33,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO0=[0,b(e),ml,11,ml,33,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO3=[0,b(aj),[0,b(vY),0]],aO9=[0,b(aj),[0,b(kx),0]],aPo=[0,b(e),gD,10,gD,14,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aO_=[0,b(e),gD,10,gD,14,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPp=[0,b(aj),[0,b("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aPs=[0,b(E),h3,14,h3,75,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPt=[0,b(aj),[0,b(mL),0]],aPq=[0,b(E),h3,14,h3,75,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPw=[0,b(E),jh,14,jh,69,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPx=[0,b(aj),[0,b(oj),0]],aPu=[0,b(E),jh,14,jh,69,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPA=[0,b(E),jj,14,jj,70,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPB=[0,b(aj),[0,b(mB),0]],aPy=[0,b(E),jj,14,jj,70,[0,b(d5),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aPC=[0,b(aj),[0,b(fG),[0,b(dN),0]]],aPD=[0,b(aj),[0,b(fG),[0,b(dN),0]]],aPH=[0,b(e),oJ,10,oJ,17,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPE=[0,b(e),oJ,10,oJ,17,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPI=[0,b(aj),[0,b("coefficient_prise_en_charge_d832_10_formule"),0]],aPR=[0,b(aj),[0,b(kT),0]],aP2=[0,b(e),ex,10,ex,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aPS=[0,b(e),ex,10,ex,25,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aP3=[0,b(aj),[0,b("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aP$=[0,b(e),fO,12,fO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aP4=[0,b(e),fO,12,fO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQa=[0,b(aj),[0,b(q8),0]],aQg=[0,b(e),m6,10,m6,23,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQb=[0,b(e),m6,10,m6,23,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQh=[0,b(aj),[0,b("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aQv=[0,b(aj),[0,b(eH),0]],aQy=[0,b(e),oO,12,oO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQw=[0,b(e),oO,12,oO,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQz=[0,b(aj),[0,b(sl),0]],aQE=[0,b(e),oX,10,oX,15,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQA=[0,b(e),oX,10,oX,15,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQF=[0,b(aj),[0,b("coefficient_prise_en_charge_d832_10_seuil"),0]],aQU=[0,b(aj),[0,b(bI),0]],aQZ=[0,b(e),m0,12,m0,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQV=[0,b(e),m0,12,m0,31,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aQ0=[0,b(aj),[0,b(cT),0]],aQ9=[0,b(aj),[0,b(fg),0]],azS=[0,b(E),A5,14,A5,36,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],azN=[0,b(at),[0,b(bI),[0,b(ai),0]]],azO=[0,b(at),[0,b(bI),0]],azP=[0,b(at),[0,b(bI),[0,b(ac),0]]],azQ=[0,b(at),[0,b(bI),0]],azR=b(o),azT=[0,b(e),mV,10,mV,25,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azM=[0,b(e),mV,10,mV,25,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azJ=[0,b(E),uY,14,uY,33,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],azH=b(o),azI=b(o),azD=[0,b(E),yt,14,yt,36,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],azs=[0,b(at),[0,b(eH),[0,b(ai),0]]],azt=[0,b(at),[0,b(eH),0]],azu=[0,b(at),[0,b(eH),[0,b(ac),0]]],azv=[0,b(at),[0,b(eH),0]],azw=[0,b(bj),[0,b(bO),[0,b(ai),0]]],azx=[0,b(bj),[0,b(bO),0]],azy=[0,b(bj),[0,b(bO),[0,b(ac),0]]],azz=[0,b(bj),[0,b(bO),0]],azA=b(k2),azB=b(o),azC=b(o),azE=[0,b(e),oP,10,oP,40,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azr=[0,b(e),oP,10,oP,40,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azn=[0,b(E),CM,5,CM,26,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],azl=b(oz),azm=b(oz),azo=[0,b(e),gz,10,gz,15,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azk=[0,b(E),D6,14,D6,49,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],azi=b(g$),azj=b(g$),aze=[0,b(E),CH,14,CH,36,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ay6=[0,b(at),[0,b(bH),[0,b(ai),0]]],ay7=[0,b(at),[0,b(bH),0]],ay8=[0,b(at),[0,b(bH),[0,b(ac),0]]],ay9=[0,b(at),[0,b(bH),0]],ay_=[0,b(at),[0,b(kv),[0,b(ai),0]]],ay$=[0,b(at),[0,b(kv),0]],aza=[0,b(at),[0,b(kv),[0,b(ac),0]]],azb=[0,b(at),[0,b(kv),0]],azc=b(o),azd=b(o),azf=[0,b(e),m2,10,m2,20,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ay5=[0,b(e),m2,10,m2,20,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ay1=[0,b(E),E$,5,E$,26,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayY=b(c3),ayZ=b(c3),ay0=b(l3),ay2=[0,b(e),iV,10,iV,23,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayX=[0,b(E),xs,14,xs,49,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayU=b(c3),ayV=b(c3),ayW=b(l3),ayQ=[0,b(E),B2,14,B2,40,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayM=[0,b(E),vo,14,vo,55,[0,b(yI),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayH=[0,b(at),[0,b(kD),[0,b(ai),0]]],ayI=[0,b(at),[0,b(kD),0]],ayJ=[0,b(at),[0,b(kD),[0,b(ac),0]]],ayK=[0,b(at),[0,b(kD),0]],ayL=b(o),ayN=[0,b(e),k0,11,k0,52,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayG=[0,b(e),k0,11,k0,52,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayC=[0,b(E),FQ,5,FQ,26,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayB=b(oz),ayD=[0,b(e),jk,10,jk,17,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayA=[0,b(E),nz,14,nz,49,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayx=b(o),ayy=b(o),ayz=b(g$),ayr=[0,b(E),f6,14,f6,70,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayn=[0,b(E),hE,14,hE,69,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayj=[0,b(E),iP,14,iP,75,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayf=[0,b(E),zP,14,zP,44,[0,b(yI),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayg=[0,b(e),me,11,me,41,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],aye=[0,b(e),me,11,me,41,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],aya=[0,b(E),ze,14,ze,36,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayb=[0,b(e),gB,21,gB,43,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax8=[0,b(E),v_,14,v_,40,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ax4=[0,b(Q),xi,14,xi,48,[0,b(v2),[0,b(e$),[0,b(L),0]]]],ax2=b("2142091"),ax3=b("1339340"),axY=[0,b(Q),wH,14,wH,41,[0,b("Article 32"),[0,b(e$),[0,b(L),0]]]],axW=b(qG),axX=b("2668"),axQ=[0,b(E),ik,14,ik,64,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axM=[0,b(E),h8,14,h8,59,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axI=[0,b(E),iz,14,iz,55,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axE=[0,b(E),zd,14,zd,36,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axC=b(o),axD=b(o),axF=[0,b(e),ny,10,ny,32,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],axB=[0,b(e),ny,10,ny,32,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],axx=[0,b(Q),Ck,14,Ck,48,[0,b(sq),[0,b(e$),[0,b(L),0]]]],awZ=b(o),aw0=b("46192"),aw1=b("54152"),aw2=b(z),aw3=b("57741"),aw4=b(X),aw5=b("61794"),aw6=b(_),aw7=b("65862"),aw8=b(ag),aw9=b("7368"),aw_=b("71039"),aw$=b(o),axa=b("42242"),axb=b("49299"),axc=b(z),axd=b("52565"),axe=b(X),axf=b("56268"),axg=b(_),axh=b("59957"),axi=b(ag),axj=b("6659"),axk=b("63887"),axl=b(o),axm=b("40096"),axn=b("46634"),axo=b(z),axp=b("49475"),axq=b(X),axr=b("52740"),axs=b(_),axt=b("56004"),axu=b(ag),axv=b("6180"),axw=b("59675"),axy=[0,b(e),eR,12,eR,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],awX=[0,b(aN),dK,14,dK,48,[0,b(sq),[0,b(bA),[0,b(aL),0]]]],awn=b(o),awo=b("44630"),awp=b("52321"),awq=b(z),awr=b("55788"),aws=b(X),awt=b("59704"),awu=b(_),awv=b("63635"),aww=b(ag),awx=b("7119"),awy=b("68637"),awz=b(o),awA=b("40814"),awB=b("47632"),awC=b(z),awD=b("50787"),awE=b(X),awF=b("54365"),awG=b(_),awH=b("57929"),awI=b(ag),awJ=b("6434"),awK=b("61727"),awL=b(o),awM=b("38740"),awN=b("45057"),awO=b(z),awP=b("47802"),awQ=b(X),awR=b("50957"),awS=b(_),awT=b("54110"),awU=b(ag),awV=b("5971"),awW=b("57657"),awY=[0,b(e),eR,12,eR,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],awl=[0,b(aN),Ea,14,Ea,48,[0,b(sq),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],avN=b(o),avO=b("44443"),avP=b("52101"),avQ=b(z),avR=b("55555"),avS=b(X),avT=b("59454"),avU=b(_),avV=b("63369"),avW=b(ag),avX=b("7089"),avY=b("68350"),avZ=b(o),av0=b("40643"),av1=b("47433"),av2=b(z),av3=b("50575"),av4=b(X),av5=b("54138"),av6=b(_),av7=b("57687"),av8=b(ag),av9=b("6407"),av_=b("61469"),av$=b(o),awa=b("38578"),awb=b("44869"),awc=b(z),awd=b("47602"),awe=b(X),awf=b("50744"),awg=b(_),awh=b("53884"),awi=b(ag),awj=b("5946"),awk=b("57416"),awm=[0,b(e),eR,12,eR,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avH=[0,b(e),jc,14,jc,50,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avC=[0,b(E),x_,14,x_,35,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],avD=[0,b(e),hN,12,hN,33,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avy=[0,b(Q),BH,14,BH,42,[0,b("Article 29"),[0,b(e$),[0,b(L),0]]]],avx=b(ib),avt=[0,b(Q),z3,14,z3,41,[0,b("Article 28"),[0,b(e$),[0,b(L),0]]]],avs=b(kj),avo=[0,b(Q),Fi,14,Fi,35,[0,b(v2),[0,b(e$),[0,b(L),0]]]],avn=b("121726"),avp=[0,b(e),oW,12,oW,33,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avm=[0,b(e),oW,12,oW,33,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avq=[0,b(at),[0,b(Ef),0]],avu=[0,b(e),mz,11,mz,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avr=[0,b(e),mz,11,mz,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avv=[0,b(at),[0,b("montant_forfaitaire_d832_24"),0]],avz=[0,b(e),oe,11,oe,39,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avw=[0,b(e),oe,11,oe,39,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avA=[0,b(at),[0,b("montant_minimal_aide_d823_24"),0]],avE=[0,b(e),hN,12,hN,33,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avB=[0,b(e),hN,12,hN,33,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avF=[0,b(at),[0,b("condition_2_du_832_25"),0]],avI=[0,b(e),jc,14,jc,50,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avJ=[0,b(at),[0,b(kA),0]],avG=[0,b(e),jc,14,jc,50,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avK=[0,b(at),[0,b(eB),[0,b(bj),0]]],avL=[0,b(at),[0,b(eB),[0,b(bj),0]]],axz=[0,b(e),eR,12,eR,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],avM=[0,b(e),eR,12,eR,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],axA=[0,b(at),[0,b(zS),0]],axG=[0,b(at),[0,b(bH),0]],axJ=[0,b(E),iz,14,iz,55,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axK=[0,b(at),[0,b(By),0]],axH=[0,b(E),iz,14,iz,55,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axN=[0,b(E),h8,14,h8,59,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axO=[0,b(at),[0,b(nf),0]],axL=[0,b(E),h8,14,h8,59,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axR=[0,b(E),ik,14,ik,64,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axS=[0,b(at),[0,b(n1),0]],axP=[0,b(E),ik,14,ik,64,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],axT=[0,b(at),[0,b(f7),[0,b(ky),0]]],axU=[0,b(at),[0,b(f7),[0,b(ky),0]]],axZ=[0,b(e),oa,11,oa,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],axV=[0,b(e),oa,11,oa,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax0=[0,b(at),[0,b("montant_forfaitaire_d832_27"),0]],ax5=[0,b(e),kK,12,kK,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax1=[0,b(e),kK,12,kK,46,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax6=[0,b(at),[0,b(A1),0]],ax9=[0,b(e),kB,12,kB,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax7=[0,b(e),kB,12,kB,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax_=[0,b(at),[0,b(xC),0]],ayc=[0,b(e),gB,21,gB,43,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ax$=[0,b(e),gB,21,gB,43,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayd=[0,b(at),[0,b(r1),0]],ayh=[0,b(at),[0,b(kD),0]],ayk=[0,b(E),iP,14,iP,75,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayl=[0,b(at),[0,b(mL),0]],ayi=[0,b(E),iP,14,iP,75,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayo=[0,b(E),hE,14,hE,69,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayp=[0,b(at),[0,b(oj),0]],aym=[0,b(E),hE,14,hE,69,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ays=[0,b(E),f6,14,f6,70,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayt=[0,b(at),[0,b(mB),0]],ayq=[0,b(E),f6,14,f6,70,[0,b(cP),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ayu=[0,b(at),[0,b(fG),[0,b(dN),0]]],ayv=[0,b(at),[0,b(fG),[0,b(dN),0]]],ayE=[0,b(e),jk,10,jk,17,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayw=[0,b(e),jk,10,jk,17,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayF=[0,b(at),[0,b("coefficient_prise_en_charge_d832_25_formule"),0]],ayO=[0,b(at),[0,b(kv),0]],ayR=[0,b(e),oq,12,oq,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayP=[0,b(e),oq,12,oq,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayS=[0,b(at),[0,b(vh),0]],ay3=[0,b(e),iV,10,iV,23,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ayT=[0,b(e),iV,10,iV,23,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ay4=[0,b(at),[0,b("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azg=[0,b(at),[0,b(eH),0]],azp=[0,b(e),gz,10,gz,15,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azh=[0,b(e),gz,10,gz,15,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azq=[0,b(at),[0,b("coefficient_prise_en_charge_d832_25_seuil"),0]],azF=[0,b(at),[0,b(bI),0]],azK=[0,b(e),lS,12,lS,31,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azG=[0,b(e),lS,12,lS,31,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],azL=[0,b(at),[0,b(cT),0]],azU=[0,b(at),[0,b(fg),0]],avc=[0,b(E),CY,14,CY,33,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ava=b(o),avb=b(o),au8=[0,b(E),A0,14,A0,39,[0,b(rL),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],au6=b(o),au7=b(o),au2=[0,b(E),A$,14,A$,36,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],auX=[0,b(aC),[0,b(kh),[0,b(ai),0]]],auY=[0,b(aC),[0,b(kh),0]],auZ=[0,b(aC),[0,b(kh),[0,b(ac),0]]],au0=[0,b(aC),[0,b(kh),0]],au1=b(o),au3=[0,b(e),m5,10,m5,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auW=[0,b(e),m5,10,m5,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auT=[0,b(E),xn,14,xn,42,[0,b(rL),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],auP=[0,b(aG),Ca,14,Ca,36,[0,b(qQ),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],auJ=[0,b(aC),[0,b(bI),[0,b(ai),0]]],auK=[0,b(aC),[0,b(bI),0]],auL=[0,b(aC),[0,b(bI),[0,b(ac),0]]],auM=[0,b(aC),[0,b(bI),0]],auN=b(o),auO=b(o),auQ=[0,b(e),mN,10,mN,36,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auI=[0,b(e),mN,10,mN,36,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auC=[0,b(aN),Ap,14,Ap,33,[0,b(cC),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],auA=b(hw),auB=b(hw),auD=[0,b(e),ey,10,ey,22,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auz=[0,b(aN),m$,14,m$,33,[0,b(cC),[0,b(bA),[0,b(aL),0]]]],aux=b(hw),auy=b(hw),auE=[0,b(e),ey,10,ey,22,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auw=[0,b(Q),fY,14,fY,33,[0,b(cC),[0,b(bT),[0,b(L),0]]]],auu=b(hw),auv=b(hw),auF=[0,b(e),ey,10,ey,22,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auq=[0,b(E),v9,14,v9,36,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],auf=[0,b(aC),[0,b(bH),[0,b(ai),0]]],aug=[0,b(aC),[0,b(bH),0]],auh=[0,b(aC),[0,b(bH),[0,b(ac),0]]],aui=[0,b(aC),[0,b(bH),0]],auj=[0,b(bj),[0,b(bO),[0,b(ai),0]]],auk=[0,b(bj),[0,b(bO),0]],aul=[0,b(bj),[0,b(bO),[0,b(ac),0]]],aum=[0,b(bj),[0,b(bO),0]],aun=b(k2),auo=b(o),aup=b(o),aur=[0,b(e),n_,10,n_,40,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aue=[0,b(e),n_,10,n_,40,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],at_=[0,b(aN),sr,14,sr,33,[0,b(cC),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],atY=b(hf),atZ=b(b0),at0=b(dh),at1=b(hf),at2=b(e8),at3=b(e8),at4=b(dh),at5=b(dh),at6=b(r6),at7=b(qH),at8=b(e8),at9=b(b0),at$=[0,b(e),ez,10,ez,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atX=[0,b(aN),qC,14,qC,33,[0,b(cC),[0,b(bA),[0,b(aL),0]]]],atL=b(hf),atM=b(b0),atN=b(dh),atO=b(hf),atP=b(e8),atQ=b(e8),atR=b(dh),atS=b(dh),atT=b(r6),atU=b(qH),atV=b(e8),atW=b(b0),aua=[0,b(e),ez,10,ez,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atK=[0,b(Q),qP,14,qP,33,[0,b(cC),[0,b(bT),[0,b(L),0]]]],aty=b(hf),atz=b(b0),atA=b(dh),atB=b(hf),atC=b(e8),atD=b(e8),atE=b(dh),atF=b(dh),atG=b(r6),atH=b(qH),atI=b(e8),atJ=b(b0),aub=[0,b(e),ez,10,ez,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atu=[0,b(E),D$,14,D$,36,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ato=[0,b(aC),[0,b(kq),[0,b(ai),0]]],atp=[0,b(aC),[0,b(kq),0]],atq=[0,b(aC),[0,b(kq),[0,b(ac),0]]],atr=[0,b(aC),[0,b(kq),0]],ats=b(o),att=b(o),atv=[0,b(e),o2,10,o2,32,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atn=[0,b(e),o2,10,o2,32,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ath=[0,b(aN),Aj,14,Aj,28,[0,b(cC),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],atf=b(c3),atg=b(c3),ati=[0,b(e),dK,11,dK,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ate=[0,b(aN),wd,14,wd,28,[0,b(cC),[0,b(bA),[0,b(aL),0]]]],atc=b(c3),atd=b(c3),atj=[0,b(e),dK,11,dK,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atb=[0,b(Q),zO,14,zO,28,[0,b(cC),[0,b(bT),[0,b(L),0]]]],as$=b(c3),ata=b(c3),atk=[0,b(e),dK,11,dK,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],as6=[0,b(Q),dy,14,dy,36,[0,b(si),[0,b(bT),[0,b(L),0]]]],as2=b(FS),as3=b(iu),as4=b(iu),as5=b(FS),as7=[0,b(e),eT,12,eT,34,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],as0=[0,b(aN),vg,14,vg,36,[0,b(si),[0,b(bA),[0,b(aL),0]]]],asW=b(CW),asX=b(iu),asY=b(iu),asZ=b(CW),as1=[0,b(e),eT,12,eT,34,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asU=[0,b(aN),gE,14,gE,36,[0,b(si),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],asQ=b(Et),asR=b(iu),asS=b(iu),asT=b(Et),asV=[0,b(e),eT,12,eT,34,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asL=[0,b(E),FT,5,FT,50,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],asM=[0,b(e),hG,10,hG,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asK=[0,b(E),zE,14,zE,36,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],asJ=b(o),asN=[0,b(e),hG,10,hG,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asI=[0,b(e),hG,10,hG,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asF=[0,b(E),xo,14,xo,28,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],asB=[0,b(Q),rf,14,rf,42,[0,b(B5),[0,b(bT),[0,b(L),0]]]],asy=b("3.4"),asz=b(ic),asA=b(ic),asu=[0,b(Q),rj,14,rj,41,[0,b(B5),[0,b(bT),[0,b(L),0]]]],asr=b("4."),ass=b(y1),ast=b(y1),asn=[0,b(E),zu,14,zu,29,[0,b("Article D842-2"),[0,b(sn),[0,b(al),[0,b(ak),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],asl=b(op),asm=b(kN),asf=[0,b(Q),EK,29,EK,64,[0,b(dO),[0,b(bT),[0,b(L),0]]]],asc=b(gu),asd=b(qU),ase=b(fj),asg=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asa=[0,b(aN),wa,29,wa,64,[0,b(dO),[0,b(bA),[0,b(aL),0]]]],ar9=b(gN),ar_=b(qu),ar$=b(e_),asb=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ar7=[0,b(aN),vF,29,vF,64,[0,b(dO),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],ar4=b(oE),ar5=b(BS),ar6=b(mO),ar8=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ash=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ar1=[0,b(Q),zT,29,zT,64,[0,b(r$),[0,b(bT),[0,b(L),0]]]],arZ=b(gu),ar0=b(fj),ar2=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arX=[0,b(aN),Cf,29,Cf,64,[0,b(r$),[0,b(bA),[0,b(aL),0]]]],arV=b(gN),arW=b(e_),arY=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arT=[0,b(aN),B0,29,B0,64,[0,b(r$),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],arR=b(oE),arS=b(mO),arU=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ar3=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arK=b(o),arL=[0,b(Q),529,5,530,34,[0,b(dO),[0,b(bT),[0,b(L),0]]]],arH=b(Bf),arI=b(vW),arJ=b(Dt),arM=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arE=b(o),arF=[0,b(Q),538,5,539,34,[0,b(dO),[0,b(bT),[0,b(L),0]]]],arB=b("27905"),arC=b("24683"),arD=b("22911"),arG=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ary=b(z),arz=[0,b(Q),zZ,5,zZ,35,[0,b(dO),[0,b(bT),[0,b(L),0]]]],arp=b(z),arq=b("4576"),arr=b("31539"),ars=b(z),art=b("4043"),aru=b("27774"),arv=b(z),arw=b("3682"),arx=b("25689"),arA=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arm=b(o),arn=[0,b(aN),qR,5,qP,34,[0,b(dO),[0,b(bA),[0,b(aL),0]]]],arj=b(DE),ark=b(yc),arl=b(wF),aro=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arg=b(o),arh=[0,b(aN),ku,5,416,34,[0,b(dO),[0,b(bA),[0,b(aL),0]]]],ard=b("26962"),are=b("23848"),arf=b("22136"),ari=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ara=b(z),arb=[0,b(aN),ru,5,ru,35,[0,b(dO),[0,b(bA),[0,b(aL),0]]]],aq3=b(z),aq4=b("4421"),aq5=b("30473"),aq6=b(z),aq7=b("3906"),aq8=b("26835"),aq9=b(z),aq_=b("3557"),aq$=b("24821"),arc=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aq0=b(o),aq1=[0,b(aN),Ga,5,1198,34,[0,b(dO),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aqX=b(CG),aqY=b(v4),aqZ=b(C7),aq2=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqU=b(o),aqV=[0,b(aN),1206,5,1207,34,[0,b(dO),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aqR=b("26849"),aqS=b("23748"),aqT=b("22044"),aqW=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqO=b(z),aqP=[0,b(aN),EH,5,EH,35,[0,b(dO),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aqF=b(z),aqG=b("4403"),aqH=b("30345"),aqI=b(z),aqJ=b("3890"),aqK=b("26723"),aqL=b(z),aqM=b("3542"),aqN=b("24717"),aqQ=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arN=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqB=[0,b(Q),iE,5,iE,61,[0,b(is),[0,b(bT),[0,b(L),0]]]],aqy=b(Bf),aqz=b(vW),aqA=b(Dt),aqC=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqw=[0,b(aN),BE,5,BE,61,[0,b(is),[0,b(bA),[0,b(aL),0]]]],aqt=b(DE),aqu=b(yc),aqv=b(wF),aqx=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqr=[0,b(aN),fL,5,fL,61,[0,b(is),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aqo=b(CG),aqp=b(v4),aqq=b(C7),aqs=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqD=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aql=[0,b(Q),wy,14,wy,37,[0,b(is),[0,b(bT),[0,b(L),0]]]],aqi=b("27765"),aqj=b("24198"),aqk=b("22680"),aqm=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqg=[0,b(aN),z1,14,z1,37,[0,b(is),[0,b(bA),[0,b(aL),0]]]],aqd=b("26826"),aqe=b("23380"),aqf=b("21913"),aqh=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqb=[0,b(aN),C_,14,C_,37,[0,b(is),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],ap_=b(Gb),ap$=b("23282"),aqa=b("21821"),aqc=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqn=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aqE=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ap6=b(o),ap7=[0,b(Q),dP,5,bd,34,[0,b(cD),[0,b(bT),[0,b(L),0]]]],ap3=b("30850"),ap4=b("26887"),ap5=b("25200"),ap8=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ap0=b(o),ap1=[0,b(Q),zk,5,115,34,[0,b(cD),[0,b(bT),[0,b(L),0]]]],apX=b("37207"),apY=b("32910"),apZ=b("30548"),ap2=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],apU=b(z),apV=[0,b(Q),kG,5,kG,35,[0,b(cD),[0,b(bT),[0,b(L),0]]]],apL=b(z),apM=b("6101"),apN=b("42052"),apO=b(z),apP=b("5390"),apQ=b("37032"),apR=b(z),apS=b("4909"),apT=b("34252"),apW=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],apI=b(o),apJ=[0,b(aN),87,5,88,34,[0,b(cD),[0,b(bA),[0,b(aL),0]]]],apF=b("29807"),apG=b(sb),apH=b("24348"),apK=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],apC=b(o),apD=[0,b(aN),97,5,98,34,[0,b(cD),[0,b(bA),[0,b(aL),0]]]],apz=b("35949"),apA=b(mW),apB=b("29515"),apE=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],apw=b(z),apx=[0,b(aN),c1,5,c1,35,[0,b(cD),[0,b(bA),[0,b(aL),0]]]],apn=b(z),apo=b("5895"),app=b("40630"),apq=b(z),apr=b(rK),aps=b(r_),apt=b(z),apu=b("4743"),apv=b("33094"),apy=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],apk=b(o),apl=[0,b(aN),884,5,885,34,[0,b(cD),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aph=b("29682"),api=b("25859"),apj=b("24246"),apm=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ape=b(o),apf=[0,b(aN),km,5,895,34,[0,b(cD),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],apb=b("35799"),apc=b(Bb),apd=b("29392"),apg=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ao_=b(z),ao$=[0,b(aN),B8,5,B8,35,[0,b(cD),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],ao1=b(z),ao2=b("5870"),ao3=b("40460"),ao4=b(z),ao5=b(wn),ao6=b(AJ),ao7=b(z),ao8=b("4723"),ao9=b(yL),apa=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ap9=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoX=[0,b(Q),hT,14,hT,42,[0,b("Article 12"),[0,b(bT),[0,b(L),0]]]],aoU=b(o),aoV=b(ib),aoW=b(ib),aoO=[0,b(aN),xY,14,xY,29,[0,b(cC),[0,b(bA),[0,b(aL),0]]]],aoI=b(o),aoJ=b(sb),aoK=b(mW),aoL=b(z),aoM=b(rK),aoN=b(r_),aoP=[0,b(e),eQ,11,eQ,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoH=[0,b(Q),l$,14,l$,29,[0,b(cC),[0,b(bT),[0,b(L),0]]]],aoB=b(o),aoC=b(sb),aoD=b(mW),aoE=b(z),aoF=b(rK),aoG=b(r_),aoQ=[0,b(e),eQ,11,eQ,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoz=[0,b(aN),ff,14,ff,29,[0,b(cC),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],aot=b(o),aou=b("25869"),aov=b(Bb),aow=b(z),aox=b(wn),aoy=b(AJ),aoA=[0,b(e),eQ,11,eQ,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoo=[0,b(Q),xZ,14,xZ,44,[0,b(mJ),[0,b(bT),[0,b(L),0]]]],an8=b(o),an9=b("494900"),an_=b("709000"),an$=b(z),aoa=b("845600"),aob=b(X),aoc=b("864600"),aod=b(_),aoe=b("897700"),aof=b(ag),aog=b("931100"),aoh=b(P),aoi=b("964200"),aoj=b(dn),aok=b(Cz),aol=b(dn),aom=b("32800"),aon=b(Cz),aop=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],an6=[0,b(aN),27,14,27,44,[0,b(mJ),[0,b("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,b(aL),0]]]],anO=b(o),anP=b("487000"),anQ=b("697700"),anR=b(z),anS=b(BO),anT=b(X),anU=b("850900"),anV=b(_),anW=b("883400"),anX=b(ag),anY=b("916300"),anZ=b(P),an0=b("948800"),an1=b(dn),an2=b(Dk),an3=b(dn),an4=b("32300"),an5=b(Dk),an7=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],anM=[0,b(aN),rx,14,rx,44,[0,b(mJ),[0,b("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,b(aL),0]]]],anu=b(o),anv=b("468300"),anw=b("670900"),anx=b(z),any=b("800200"),anz=b(X),anA=b("819200"),anB=b(_),anC=b("849500"),anD=b(ag),anE=b("881100"),anF=b(P),anG=b("912400"),anH=b(dn),anI=b(AZ),anJ=b(dn),anK=b("31100"),anL=b(AZ),anN=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ans=[0,b(aN),zc,14,zc,44,[0,b(mJ),[0,b("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,b(aL),0]]]],ana=b(o),anb=b("458800"),anc=b("657200"),and=b(z),ane=b("783900"),anf=b(X),ang=b("801500"),anh=b(_),ani=b(BO),anj=b(ag),ank=b("863100"),anl=b(P),anm=b("893800"),ann=b(dn),ano=b(vn),anp=b(dn),anq=b(om),anr=b(vn),ant=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],am5=[0,b(aN),jf,14,jf,40,[0,b(cC),[0,b(L),[0,b(ce),[0,b(aL),0]]]]],amN=b(o),amO=b(rw),amP=b(rq),amQ=b(z),amR=b(qA),amS=b(X),amT=b(ra),amU=b(_),amV=b(r4),amW=b(ag),amX=b(qw),amY=b(P),amZ=b(rg),am0=b(dn),am1=b(hJ),am2=b(dn),am3=b(rk),am4=b(hJ),am6=[0,b(e),eF,12,eF,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],amM=[0,b(aN),yy,14,yy,40,[0,b(cC),[0,b(bA),[0,b(aL),0]]]],amu=b(o),amv=b(rw),amw=b(rq),amx=b(z),amy=b(qA),amz=b(X),amA=b(ra),amB=b(_),amC=b(r4),amD=b(ag),amE=b(qw),amF=b(P),amG=b(rg),amH=b(dn),amI=b(hJ),amJ=b(dn),amK=b(rk),amL=b(hJ),am7=[0,b(e),eF,12,eF,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],amt=[0,b(Q),Ad,14,Ad,40,[0,b(cC),[0,b(bT),[0,b(L),0]]]],amb=b(o),amc=b(rw),amd=b(rq),ame=b(z),amf=b(qA),amg=b(X),amh=b(ra),ami=b(_),amj=b(r4),amk=b(ag),aml=b(qw),amm=b(P),amn=b(rg),amo=b(dn),amp=b(hJ),amq=b(dn),amr=b(rk),ams=b(hJ),am8=[0,b(e),eF,12,eF,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al7=[0,b(e),i6,14,i6,50,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al3=[0,b(Q),nR,14,nR,41,[0,b("Article 11"),[0,b(bT),[0,b(L),0]]]],al2=b(kj),alY=[0,b(E),y$,14,y$,29,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],alX=b(xg),alZ=[0,b(e),oV,11,oV,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],alW=[0,b(e),oV,11,oV,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al0=[0,b(aC),[0,b("fraction_l832_3"),0]],al4=[0,b(e),mo,11,mo,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al1=[0,b(e),mo,11,mo,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al5=[0,b(aC),[0,b("montant_forfaitaire_d823_16"),0]],al8=[0,b(e),i6,14,i6,50,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al9=[0,b(aC),[0,b(kA),0]],al6=[0,b(e),i6,14,i6,50,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],al_=[0,b(aC),[0,b(eB),[0,b(bj),0]]],al$=[0,b(aC),[0,b(eB),[0,b(bj),0]]],am9=[0,b(e),eF,12,eF,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ama=[0,b(e),eF,12,eF,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],am_=[0,b(aC),[0,b(E2),0]],aoq=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],am$=[0,b(e),dU,11,dU,41,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aor=[0,b(aC),[0,b("abattement_forfaitaire_d823_17"),0]],aoR=[0,b(e),eQ,11,eQ,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aos=[0,b(e),eQ,11,eQ,26,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoS=[0,b(aC),[0,b("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],aoY=[0,b(e),nl,11,nl,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoT=[0,b(e),nl,11,nl,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aoZ=[0,b(aC),[0,b("montant_minimal_aide_d823_16"),0]],arO=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ao0=[0,b(e),aw,12,aw,35,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arP=[0,b(aC),[0,b(CQ),0]],asi=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],arQ=[0,b(e),cc,12,cc,47,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asj=[0,b(aC),[0,b(za),0]],aso=[0,b(e),mq,10,mq,31,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ask=[0,b(e),mq,10,mq,31,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asp=[0,b(aC),[0,b("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],asv=[0,b(e),nh,11,nh,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asq=[0,b(e),nh,11,nh,38,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asw=[0,b(aC),[0,b("plafond_suppression_d823_16"),0]],asC=[0,b(e),m_,11,m_,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asx=[0,b(e),m_,11,m_,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asD=[0,b(aC),[0,b("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],asG=[0,b(e),mi,11,mi,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asE=[0,b(e),mi,11,mi,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asH=[0,b(aC),[0,b("loyer_\xc3\xa9ligible"),0]],asO=[0,b(aC),[0,b(kq),0]],as8=[0,b(e),eT,12,eT,34,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],asP=[0,b(e),eT,12,eT,34,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],as9=[0,b(aC),[0,b(E3),0]],atl=[0,b(e),dK,11,dK,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],as_=[0,b(e),dK,11,dK,25,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atm=[0,b(aC),[0,b("rapport_loyers"),0]],atw=[0,b(aC),[0,b(bH),0]],auc=[0,b(e),ez,10,ez,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],atx=[0,b(e),ez,10,ez,17,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aud=[0,b(aC),[0,b("taux_loyer_\xc3\xa9ligible_formule"),0]],aus=[0,b(aC),[0,b(bI),0]],auG=[0,b(e),ey,10,ey,22,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],aut=[0,b(e),ey,10,ey,22,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auH=[0,b(aC),[0,b("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],auR=[0,b(aC),[0,b(kh),0]],auU=[0,b(e),ou,11,ou,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auS=[0,b(e),ou,11,ou,39,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],auV=[0,b(aC),[0,b("taux_prise_compte_ressources"),0]],au4=[0,b(aC),[0,b(fg),0]],au9=[0,b(e),kE,12,kE,37,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],au5=[0,b(e),kE,12,kE,37,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],au_=[0,b(aC),[0,b(Cy),0]],avd=[0,b(e),oL,12,oL,31,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],au$=[0,b(e),oL,12,oL,31,[0,b(K),[0,b(t),[0,b(i),[0,b(f),0]]]]],ave=[0,b(aC),[0,b(cT),0]],avg=b(ic),avf=[0,b(E),l5,13,l5,74,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],avl=[0,b(E),l5,13,l5,74,[0,b(es),[0,b(dB),[0,b(ba),[0,b(a2),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],avi=b(xg),avj=b(oz),avh=[0,b(aG),gP,13,gP,61,[0,b(qQ),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),0]]]]]]],avk=[0,b(aG),gP,13,gP,61,[0,b(qQ),[0,b(bi),[0,b(af),[0,b(x),[0,b(aa),[0,b(w),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,b(bv),29,5,38,6,[0,b(b1),[0,b(lX),[0,b(aB),0]]]],alJ=b(wC),alT=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],alG=[8,0],alH=[0,b(bv),47,5,49,6,[0,b(b1),[0,b(lX),[0,b(aB),0]]]],alF=b(xA),alI=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),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,b(bv),68,5,77,6,[0,b(b1),[0,b(nN),[0,b(aB),0]]]],alu=b(AL),alE=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],alr=[8,0],als=[0,b(bv),86,5,88,6,[0,b(b1),[0,b(nN),[0,b(aB),0]]]],alq=b(u2),alt=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),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,b(bv),c1,5,bp,6,[0,b(b1),[0,b(l2),[0,b(aB),0]]]],alf=b(Bo),alp=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],alc=[8,0],ald=[0,b(bv),fe,5,ho,6,[0,b(b1),[0,b(l2),[0,b(aB),0]]]],alb=b(EA),ale=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),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,b(bv),o4,5,hr,6,[0,b(b1),[0,b(nj),[0,b(aB),0]]]],ak2=b(BG),ala=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akZ=[8,0],ak0=[0,b(bv),e9,5,eE,6,[0,b(b1),[0,b(nj),[0,b(aB),0]]]],akY=b(wQ),ak1=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),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,b(bv),h0,5,iE,6,[0,b(fS),[0,b(mM),[0,b(aB),0]]]],akN=b(zI),akX=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akK=[8,0],akL=[0,b(bv),wU,5,yv,6,[0,b(fS),[0,b(mM),[0,b(aB),0]]]],akJ=b(Ez),akM=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akz=[7,0],akA=[5,0],akB=[4,0],akC=[3,0],akD=[2,0],akE=[1,0],akF=[0,0],akG=[6,0],akH=[0,b(bv),vy,5,EY,6,[0,b(fS),[0,b(ok),[0,b(aB),0]]]],aky=b(Eh),akI=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akv=[8,0],akw=[0,b(bv),E6,5,vu,6,[0,b(fS),[0,b(ok),[0,b(aB),0]]]],aku=b(Ff),akx=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akk=[7,0],akl=[5,0],akm=[4,0],akn=[3,0],ako=[2,0],akp=[1,0],akq=[0,0],akr=[6,0],aks=[0,b(bv),rn,5,nR,6,[0,b(b1),[0,b(m9),[0,b(aB),0]]]],akj=b(vX),akt=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],akg=[8,0],akh=[0,b(bv),A8,5,ng,6,[0,b(b1),[0,b(m9),[0,b(aB),0]]]],akf=b(zH),aki=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],alU=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],ake=[0,b(bv),11,12,11,24,[0,b(B),[0,b(aB),0]]],alV=[0,b(hi),[0,b(z2),0]],aka=[0,b(eG),28,5,29,33,[0,b(Cj),[0,b(cb),0]]],aj$=b(xD),akb=[0,b(eG),6,12,6,19,[0,b(cb),0]],aj9=[0,b(eG),48,5,49,33,[0,b(AF),[0,b(cb),0]]],aj8=b(xe),aj_=[0,b(eG),6,12,6,19,[0,b(cb),0]],aj6=[0,b(eG),64,5,65,33,[0,b(B7),[0,b(cb),0]]],aj5=b(BV),aj7=[0,b(eG),6,12,6,19,[0,b(cb),0]],aj3=[0,b(eG),82,5,83,33,[0,b(wL),[0,b(cb),0]]],aj2=b(BP),aj4=[0,b(eG),6,12,6,19,[0,b(cb),0]],akc=[0,b(eG),6,12,6,19,[0,b(cb),0]],aj1=[0,b(eG),6,12,6,19,[0,b(cb),0]],akd=[0,b(f4),[0,b(bO),0]],ajW=[0,b(E),y8,14,y8,28,[0,b(kU),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajV=b(o),ajX=[0,b(e),fZ,12,fZ,26,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajU=[0,b(E),Dc,14,Dc,28,[0,b(kO),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajT=b(o),ajY=[0,b(e),fZ,12,fZ,26,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajO=[0,b(E),qZ,20,qZ,55,[0,b(kO),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajL=b(o),ajM=b(o),ajN=b(kN),ajP=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajJ=[0,b(E),DB,20,DB,51,[0,b(kO),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajG=b(o),ajH=b(o),ajI=b(kN),ajK=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajE=[0,b(E),x3,7,x3,42,[0,b(kU),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajA=b(Ct),ajB=b(en),ajC=b(kN),ajD=b(o),ajF=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajy=[0,b(E),wx,7,wx,51,[0,b(kU),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aju=b(Ct),ajv=b(en),ajw=b(kN),ajx=b(o),ajz=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajp=[0,b(E),wp,14,wp,36,[0,b(kO),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajq=[0,b(e),fN,11,fN,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajn=[0,b(E),BR,14,BR,36,[0,b(kU),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajm=b(cF),ajo=[0,b(e),fN,11,fN,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajg=[0,b(E),vD,14,vD,36,[0,b(kU),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ajh=[0,b(e),fQ,11,fQ,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajf=[0,b(E),xK,14,xK,36,[0,b(kO),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aji=[0,b(e),fQ,11,fQ,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajb=[0,b(E),vH,14,vH,36,[0,b("Article R824-3"),[0,b(d8),[0,b(d$),[0,b(ab),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],ai8=[0,0],ai9=[1,0],ai_=[1,0],ai$=[0,0],aja=[0,0],ajc=[0,b(e),oA,11,oA,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ai7=[0,b(e),oA,11,oA,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajd=[0,b(kM),[0,b("mode_occupation_impay\xc3\xa9"),0]],ajj=[0,b(e),fQ,11,fQ,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],aje=[0,b(e),fQ,11,fQ,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajk=[0,b(kM),[0,b("d\xc3\xa9pense_logement_brute"),0]],ajr=[0,b(e),fN,11,fN,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajl=[0,b(e),fN,11,fN,33,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajs=[0,b(kM),[0,b("d\xc3\xa9pense_logement_nette"),0]],ajQ=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajt=[0,b(e),dY,11,dY,43,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajR=[0,b(kM),[0,b("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],ajZ=[0,b(e),fZ,12,fZ,26,[0,b(cg),[0,b(A),[0,b(f),0]]]],ajS=[0,b(e),fZ,12,fZ,26,[0,b(cg),[0,b(A),[0,b(f),0]]]],aj0=[0,b(kM),[0,b("montant_impay\xc3\xa9"),0]],ai2=[0,b(c6),rO,5,rO,42,[0,b(kl),[0,b(j5),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]]]]],ai3=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],ai0=[0,b(c6),fR,5,fR,41,[0,b(kL),[0,b(ks),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(j6),[0,b(a7),[0,b(ad),0]]]]]]]]]],ai1=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],aiY=[0,b(c6),266,5,vA,42,[0,b(kL),[0,b(ks),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(j6),[0,b(a7),[0,b(ad),0]]]]]]]]]],aiZ=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],aiV=b("1952"),aiW=[0,b(c6),xb,5,xb,48,[0,b(kL),[0,b(ks),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(j6),[0,b(a7),[0,b(ad),0]]]]]]]]]],aiX=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],aiS=b("1953"),aiT=[0,b(c6),ng,5,ng,48,[0,b(kL),[0,b(ks),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(j6),[0,b(a7),[0,b(ad),0]]]]]]]]]],aiU=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],aiP=b("1954"),aiQ=[0,b(c6),dk,5,dk,48,[0,b(kL),[0,b(ks),[0,b(eu),[0,b(eO),[0,b(eP),[0,b(eo),[0,b(j6),[0,b(a7),[0,b(ad),0]]]]]]]]]],aiR=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],ai4=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],aiO=[0,b(e),cS,12,cS,31,[0,b(fE),[0,b(A),[0,b(f),0]]]],ai5=[0,b(rG),[0,b("\xc3\xa2ge_ouverture_droit"),0]],aiL=[0,b(E),xy,14,xy,36,[0,b(d3),[0,b(an),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]],aix=b(o),aiy=b(D3),aiz=b(we),aiA=b(z),aiB=b(ic),aiC=b(X),aiD=b(op),aiE=b(_),aiF=b(qz),aiG=b(ag),aiH=b(hO),aiI=b(ag),aiJ=b(kb),aiK=b(hO),aiM=[0,b(e),lW,12,lW,34,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aiw=[0,b(e),lW,12,lW,34,[0,b(D),[0,b(t),[0,b(i),[0,b(f),0]]]]],aiN=[0,b(kp),[0,b(vY),0]],ais=[0,b(E),yl,5,yl,26,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],aie=b(o),aif=b("1.2"),aig=b("1.5"),aih=b(z),aii=b(ic),aij=b(X),aik=b(op),ail=b(_),aim=b(qz),ain=b(ag),aio=b(hO),aip=b(ag),aiq=b(kb),air=b(hO),ait=[0,b(e),jd,12,jd,34,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],aid=[0,b(E),vE,14,vE,36,[0,b(cq),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ah1=b(o),ah2=b(D3),ah3=b(we),ah4=b(z),ah5=b(ic),ah6=b(X),ah7=b(op),ah8=b(_),ah9=b(qz),ah_=b(ag),ah$=b(hO),aia=b(ag),aib=b(kb),aic=b(hO),aiu=[0,b(e),jd,12,jd,34,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ah0=[0,b(e),jd,12,jd,34,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],aiv=[0,b(ky),[0,b(r1),0]],ahW=[0,b(E),oH,5,oH,26,[0,b(rs),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ahU=b(b0),ahT=b(cF),ahV=b(b0),ahX=[0,b(e),je,12,je,19,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahS=[0,b(E),w5,14,w5,21,[0,b(rs),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ahQ=b(b0),ahP=b(cF),ahR=b(b0),ahL=[0,b(E),Ey,14,Ey,50,[0,b(rs),[0,b(a5),[0,b(ap),[0,b(am),[0,b(af),[0,b(x),[0,b(F),[0,b(w),0]]]]]]]]],ahK=[1,0],ahF=[0,b(Q),Bw,5,Bw,26,[0,b(ss),[0,b(e$),[0,b(L),0]]]],ahq=b("0.328"),ahr=b(xQ),ahs=[1,0],aht=b(v1),ahu=b(DO),ahv=b(xQ),ahw=b(ve),ahx=b(y0),ahy=b(DO),ahz=b("0.024"),ahA=b(wl),ahB=b(y0),ahC=b(b0),ahD=b(o),ahE=b(wl),ahG=[0,b(e),il,11,il,35,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahp=[0,b(Q),FH,14,FH,38,[0,b(ss),[0,b(e$),[0,b(L),0]]]],ag9=b("0.48"),ag_=b(xf),ag$=[1,0],aha=b(sm),ahb=b(y5),ahc=b(xf),ahd=b("0.264"),ahe=b(yn),ahf=b(y5),ahg=b("0.216"),ahh=b(Ec),ahi=b(yn),ahj=b("0.104"),ahk=b(yk),ahl=b(Ec),ahm=b(Cr),ahn=b(o),aho=b(yk),ag5=[0,b(Q),z7,14,z7,41,[0,b(ss),[0,b(e$),[0,b(L),0]]]],ag3=b("7632"),ag4=b("4557"),ag6=[0,b(e),mf,11,mf,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ag2=[0,b(e),mf,11,mf,38,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ag7=[0,b(dN),[0,b("montant_forfaitaire_d832_26"),0]],ahH=[0,b(e),il,11,il,35,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ag8=[0,b(e),il,11,il,35,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahI=[0,b(dN),[0,b("tranches_revenus_d832_26"),0]],ahM=[0,b(e),kI,11,kI,47,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahJ=[0,b(e),kI,11,kI,47,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahN=[0,b(dN),[0,b("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],ahY=[0,b(e),je,12,je,19,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahO=[0,b(e),je,12,je,19,[0,b(N),[0,b(t),[0,b(i),[0,b(f),0]]]]],ahZ=[0,b(dN),[0,b(bO),0]],agY=[0,b(e7),F8,5,F8,34,[0,b(cC),[0,b(rm),[0,b(so),0]]]],agZ=[0,b(e),mP,12,mP,19,[0,b(fH),[0,b(i),[0,b(f),0]]]],agX=[0,b(e),mP,12,mP,19,[0,b(fH),[0,b(i),[0,b(f),0]]]],agU=[0,b(e7),xJ,39,xJ,68,[0,b(nt),[0,b(rm),[0,b(so),0]]]],agT=b(l3),agO=[0,b(c6),37,9,37,20,[0,b("Article L136-1-3"),[0,b("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,b("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,b(i9),[0,b(aa),[0,b(ad),0]]]]]]],agP=[0,b(e),f1,11,f1,22,[0,b(fH),[0,b(i),[0,b(f),0]]]],agN=[0,b(e),f1,11,f1,22,[0,b(fH),[0,b(i),[0,b(f),0]]]],agQ=[0,b(e),f1,11,f1,22,[0,b(fH),[0,b(i),[0,b(f),0]]]],agM=[0,b(e),f1,11,f1,22,[0,b(fH),[0,b(i),[0,b(f),0]]]],agR=[0,b(bj),[0,b("exon\xc3\xa9r\xc3\xa9_csg"),0]],agV=[0,b(e),nW,11,nW,20,[0,b(fH),[0,b(i),[0,b(f),0]]]],agS=[0,b(e),nW,11,nW,20,[0,b(fH),[0,b(i),[0,b(f),0]]]],agW=[0,b(bj),[0,b("taux_crds"),0]],ag0=[0,b(bj),[0,b(bO),0]],ag1=[0,b(e7),cL,13,cL,24,[0,b(cC),[0,b(rm),[0,b(so),0]]]],agC=b("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),agD=b(hx),agE=b(hY),agF=b(iw),agG=b(ix),agH=b(kF),agI=b(AM),agJ=b(vc),agK=b(C4),agL=[0,b("CalculAllocationLogementFoyer_in"),0],agn=b(z5),ago=b("charges_mensuelles_pr\xc3\xaat_in"),agp=b(yO),agq=b(AH),agr=b(yb),ags=b(uX),agt=b(Am),agu=b(wG),agv=b(hx),agw=b(hY),agx=b(iw),agy=b(ix),agz=b("ressources_m\xc3\xa9nage_arrondies_base_in"),agA=[0,b("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],af_=b("changement_logement_d842_4_in"),af$=b(vC),aga=b(Bl),agb=b(BB),agc=b(BX),agd=b(Bu),age=b(Fn),agf=b(hY),agg=b(iw),agh=b(ix),agi=b(hx),agj=b(F7),agk=b(kF),agl=b("loyer_principal_in"),agm=[0,b("CalculAllocationLogementLocatif_in"),0],afV=b(hx),afW=b("anciennet\xc3\xa9_logement_in"),afX=b("type_pr\xc3\xaat_in"),afY=b(hY),afZ=b(Am),af0=b(z5),af1=b(yO),af2=b(AH),af3=b(uX),af4=b(yb),af5=b(iw),af6=b(ix),af7=b(kF),af8=b(wG),af9=[0,b("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],afJ=b("n_nombre_parts_d832_25_in"),afK=b("condition_2_du_832_25_in"),afL=b(AM),afM=b(hx),afN=b(hY),afO=b(iw),afP=b(ix),afQ=b(kF),afR=b(vc),afS=b(C4),afT=[0,b("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],afu=b(vC),afv=b(Bl),afw=b(BB),afx=b(BX),afy=b(Bu),afz=b(Fn),afA=b(hY),afB=b(iw),afC=b(ix),afD=b(hx),afE=b(F7),afF=b(kF),afG=b("loyer_principal_base_in"),afH=[0,b("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],afl=b("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),afm=b("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),afn=b("situation_familiale"),afo=b("nombre_autres_occupants_logement"),afp=b("personnes_\xc3\xa0_charge"),afq=b("logement"),afr=b("prestations_re\xc3\xa7ues"),afs=[0,b("M\xc3\xa9nage"),0],afb=b("zone"),afc=b("surface_m_carr\xc3\xa9s"),afd=b("logement_decent_l89_462"),afe=b("usufruit"),aff=b("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afg=b("propri\xc3\xa9taire"),afh=b("mode_occupation"),afi=b("est_ehpad_ou_maison_autonomie_l313_12_asf"),afj=b("r\xc3\xa9sidence_principale"),afk=[0,b("Logement"),0],ae7=b(y7),ae9=b("R\xc3\xa9sidentLogementFoyer"),ae_=b("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),ae$=b(Df),afa=b(xL),ae8=[0,b("ModeOccupation"),0],ae3=b(FX),ae5=b("AccessionPropri\xc3\xa9t\xc3\xa9"),ae6=b(xP),ae4=[0,b("Cat\xc3\xa9gorieCalculAPL"),0],aeU=b("changement_logement_d842_4"),aeV=b("logement_meubl\xc3\xa9_d842_2"),aeW=b("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),aeX=b("colocation"),aeY=b("logement_est_chambre"),aeZ=b("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),ae0=b("loyer_principal"),ae1=b("bailleur"),ae2=[0,b(FX),0],aeP=b("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),aeQ=b("patrimoine"),aeR=b("nationalit\xc3\xa9"),aeS=b(Bm),aeT=[0,b(qq),0],aeM=b(DU),aeO=b(CJ),aeN=[0,b("Personne\xc3\x80Charge"),0],aeA=b("pr\xc3\xaat"),aeB=b("anciennet\xc3\xa9_logement"),aeC=b("situation_r822_11_13_17"),aeD=b("copropri\xc3\xa9t\xc3\xa9"),aeE=b("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),aeF=b("type_travaux_logement_r842_5"),aeG=b("type_travaux_logement_d832_15"),aeH=b("date_entr\xc3\xa9e_logement"),aeI=b("charges_mensuelles_pr\xc3\xaat"),aeJ=b("mensualit\xc3\xa9_principale"),aeK=b("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),aeL=[0,b("Propri\xc3\xa9taire"),0],aex=b(AN),aez=b(zw),aey=[0,b("ChangementLogementD842_4"),0],aeu=b("Fran\xc3\xa7aise"),aew=b("\xc3\x89trang\xc3\xa8re"),aev=[0,b("Nationalit\xc3\xa9"),0],aer=b(kV),aet=b(o5),aes=[0,b("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],aen=b(CO),aep=b("BailleurPriv\xc3\xa9AvecConventionnementSocial"),aeq=b("BailleurPriv\xc3\xa9"),aeo=[0,b("TypeBailleur"),0],aef=b("situation_garde_altern\xc3\xa9e"),aeg=b(rA),aeh=b(q2),aei=b(q1),aej=b(qT),aek=b(qF),ael=b(rt),aem=[0,b(DU),0],ad9=b(qF),ad_=b(qT),ad$=b(EV),aea=b(q1),aeb=b(q2),aec=b(rA),aed=b(rt),aee=[0,b("EnfantPrestationsFamiliales"),0],ad1=b("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),ad2=b("redevance"),ad3=b("construit_application_loi_1957_12_III"),ad4=b("date_conventionnement"),ad5=b(Fc),ad6=b("remplit_conditions_r832_21"),ad7=b("type"),ad8=[0,b(xP),0],adT=b("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),adU=b("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),adV=b("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),adW=b("parent\xc3\xa9"),adX=b("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),adY=b("ressources"),adZ=b(Bm),ad0=[0,b(CJ),0],adP=b(u0),adQ=b(vd),adR=b(EG),adS=[0,b("TrancheRevenuD\xc3\xa9cimal"),0],adK=b(u0),adL=b(vd),adM=b(EG),adN=[0,b("TrancheRevenu"),0],adG=b(Ay),adI=b(C0),adH=[0,b("NeufOuAncien"),0],adC=b("titulaire_pr\xc3\xaat"),adD=b("date_signature"),adE=b("type_pr\xc3\xaat"),adF=[0,b("Pr\xc3\xaat"),0],adv=b(av),adw=b(cT),adx=b(FN),ady=b(qv),adz=b(u4),adA=b(q5),adB=[0,b(ao),0],adr=b(av),ads=b(cT),adt=[0,b(V),0],ado=b(av),adp=b(cT),adq=[0,b(bg),0],adl=b("ancienne_allocation_logement"),adm=b("ancien_loyer_principal"),adn=[0,b("InfosChangementLogementD842_4"),0],adi=b(av),adj=b(cT),adk=[0,b("Traitement_formule_aide_finale"),0],adc=b(av),add=b(cT),ade=b("coefficient_prise_en_charge_d832_10"),adf=b(q8),adg=b(sl),adh=[0,b(aj),0],ac3=b(av),ac4=b(cT),ac5=b("coefficient_prise_en_charge_d832_25"),ac6=b(vh),ac7=b(zS),ac8=b(xC),ac9=b(r1),ac_=b(Ef),ac$=b(A1),ada=[0,b(at),0],acU=b(av),acV=b(cT),acW=b(Cy),acX=b(E2),acY=b(E3),acZ=b(CQ),ac0=b(za),ac1=[0,b(aC),0],acR=b("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),acS=[0,b("Conditions\xc3\x89trangers"),0],acO=b("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),acP=b("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),acQ=[0,b("Patrimoine"),0],acL=b("conforme_article_l442_1"),acM=b("date_naissance_personne_sous_location"),acN=[0,b("PersonneSousLocation"),0],acJ=b("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),acK=[0,b("ConventionANHA"),0],acG=b("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),acH=b(Fc),acI=[0,b("ConventionBailleurSocial"),0],acx=b(og),acz=b(U),acA=b(qS),acB=b(nX),acC=b(DL),acD=b(iR),acE=b(BN),acF=b(yS),acy=[0,b(FM),0],acs=b(kr),acu=b(kg),acv=b(Cc),act=[0,b(CN),0],acm=b(A2),aco=b(DW),acp=b(j4),acq=b(Fo),acr=b(yC),acn=[0,b("PriseEnChargeEnfant"),0],acc=b(mA),ace=b(ot),acf=b(md),acg=b(Dl),ach=b(yN),aci=b(o7),acj=b(CV),ack=b(no),acl=b(oF),acd=[0,b(BQ),0],ab$=b(ER),acb=b(Ak),aca=[0,b("SituationFamilialeCalculAPL"),0],ab6=b("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),ab8=b("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),ab9=b("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),ab_=b(EO),ab7=[0,b("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],ab1=b("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),ab3=b("R\xc3\xa9sidenceSociale"),ab4=b("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),ab5=b(ig),ab2=[0,b("TypeLogementFoyer"),0],abU=b("C\xc3\xa9libataire"),abW=b("Mari\xc3\xa9s"),abX=b("Pacs\xc3\xa9s"),abY=b(yP),abZ=b("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),ab0=b("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),abV=[0,b("SituationFamiliale"),0],abQ=b("AidePersonnalis\xc3\xa9eLogement"),abS=b(oU),abT=b(nm),abR=[0,b("TypeAidesPersonnelleLogement"),0],abM=b("Pas\xc3\x89ligible"),abO=b(oU),abP=b(nm),abN=[0,b("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],abJ=b("Impay\xc3\xa9Loyer"),abL=b("Impay\xc3\xa9Pr\xc3\xaat"),abK=[0,b("ModeOccupationImpay\xc3\xa9"),0],abE=b("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),abG=b("Mensualit\xc3\xa9"),abH=b(Fr),abF=[0,b("D\xc3\xa9penseLogement"),0],abA=b(y6),abC=b(vZ),abD=b(yH),abB=[0,b("ZoneDHabitation"),0],abw=b(Be),aby=b(A6),abz=b("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),abx=[0,b("Parent\xc3\xa9"),0],abt=b("PasDeGardeAltern\xc3\xa9e"),abv=b("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),abu=[0,b("SituationGardeAltern\xc3\xa9e"),0],abq=b("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),abs=b(ig),abr=[0,b("ParentOuAutre"),0],abj=b(U),abl=b(qS),abm=b(CI),abn=b(iR),abo=b("AllocationSoutienEnfantHandicap\xc3\xa9"),abp=b("AllocationAdulteHandicap\xc3\xa9"),abk=[0,b("PrestationRe\xc3\xa7ue"),0],abf=b(Eg),abh=b(vU),abg=[0,b("LimiteTrancheD\xc3\xa9cimal"),0],abc=b(Eg),abe=b(vU),abd=[0,b("LimiteTranche"),0],aa$=b(o5),abb=b(kV),aba=[0,b("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],aa6=b("ObjectifD\xc3\xa9cenceLogement"),aa8=b("Pr\xc3\xa9vuDansListeR321_15"),aa9=b(Ch),aa_=b(or),aa7=[0,b("TypeTravauxLogementR842_5"),0],aa2=b(w7),aa4=b("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),aa5=b(or),aa3=[0,b("TypeTravauxLogementD832_15"),0],aaZ=b(qq),aa1=b(xv),aa0=[0,b("TitulairePr\xc3\xaat"),0],aaT=b(Bv),aaV=b(xt),aaW=b(z4),aaX=b(Aa),aaY=b(ig),aaU=[0,b("TypePr\xc3\xaat"),0],bxy=b(ae),bw_=b("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bw$=b("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bw8=b("The function 'condition_logement_surface_in' translation isn't yet supported..."),bw9=b("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bw2=b("AccessionProprieteLocalUsageExclusifHabitation"),bw3=b(y7),bw4=b(xL),bw5=b("ResidentLogementFoyer"),bw6=b(Df),bw7=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'ModeOccupation.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bwZ=b("AutrePersonneACharge"),bw0=b("EnfantACharge"),bw1=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'PersonneACharge.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bwV=b(AN),bwW=b(zw),bwY=[1,0],bwX=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bwR=b("Etrangere"),bwS=b("Francaise"),bwU=[0,0],bwT=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'Nationalite.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bwN=b(kV),bwO=b(o5),bwQ=[0,0],bwP=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bwI=b("BailleurPrive"),bwJ=b("BailleurPriveAvecConventionnementSocial"),bwK=b(CO),bwM=[2,0],bwL=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypeBailleur.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bwE=b("MoinsDeTroisEnfants"),bwF=b("PlusDeTroisEnfants"),bwH=[0,0],bwG=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bwA=b(C0),bwB=b(Ay),bwD=[0,0],bwC=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'NeufOuAncien.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bwj=b(vP),bwk=b(x0),bwl=b(nX),bwm=b(Ew),bwn=b(iR),bwo=b(U),bwp=b(qp),bwq=b(og),bws=[0,0],bwt=[2,0],bwu=[1,0],bwv=[5,0],bww=[6,0],bwx=[3,0],bwy=[7,0],bwz=[4,0],bwr=[0,[11,b(bf),[2,0,[11,b(DX),0]]],b(FO)],bwc=b(r0),bwd=b(kr),bwe=b(kg),bwg=[1,0],bwh=[0,0],bwi=[2,0],bwf=[0,[11,b(bf),[2,0,[11,b(xT),0]]],b(wo)],bv3=b(j4),bv4=b(q$),bv5=b(qN),bv6=b(rr),bv7=b(qK),bv9=[4,0],bv_=[3,0],bv$=[0,0],bwa=[1,0],bwb=[2,0],bv8=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bvK=b(mA),bvL=b(ot),bvM=b(wj),bvN=b(md),bvO=b(oF),bvP=b(Fg),bvQ=b(w9),bvR=b(o7),bvS=b(no),bvU=[7,0],bvV=[5,0],bvW=[4,0],bvX=[6,0],bvY=[8,0],bvZ=[2,0],bv0=[3,0],bv1=[1,0],bv2=[0,0],bvT=[0,[11,b(bf),[2,0,[11,b(BL),0]]],b(wE)],bvF=b(Ak),bvG=b(ER),bvI=[0,0],bvJ=[1,0],bvH=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bvw=b(EO),bvx=b("EtudiantLogeEnChambreCROUS"),bvy=b("EtudiantLogeEnChambreCROUSRehabilitee"),bvz=b("PersonnesAgeesSelon3DeD842_16"),bvB=[2,0],bvC=[1,0],bvD=[0,0],bvE=[3,0],bvA=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bvn=b(ig),bvo=b("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bvp=b("LogementPersonnesAgeesOuHandicapees"),bvq=b("ResidenceSociale"),bvs=[1,0],bvt=[0,0],bvu=[2,0],bvv=[3,0],bvr=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvb=b("Celibataire"),bvc=b("CelibataireSepareDeFait"),bvd=b("ConcubinageDontSepareDeFait"),bve=b(yP),bvf=b("Maries"),bvg=b("Pacses"),bvi=[2,0],bvj=[3,0],bvk=[5,0],bvl=[4,0],bvm=[0,0],bvh=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'SituationFamiliale.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bu6=b("AidePersonnaliseeLogement"),bu7=b(oU),bu8=b(nm),bu_=[2,0],bu$=[1,0],bva=[0,0],bu9=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bu2=b(Fr),bu3=b("Mensualite"),bu4=b("TotalAnnuelEcheances"),bu5=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'DepenseLogement.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],buV=b("Bailleur"),buW=b("Beneficiaire"),buX=b("EtablissementHabilite"),buZ=[2,0],bu0=[1,0],bu1=[0,0],buY=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'VersementA.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'VersementA.t'")],buR=b(kV),buS=b("OuiAvecLoyerOuCharges"),buU=[1,0],buT=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],buK=b(y6),buL=b(vZ),buM=b(yH),buO=[2,0],buP=[1,0],buQ=[0,0],buN=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],buE=b("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),buF=b("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),buG=b("DateDeNaissance"),buI=[1,0],buJ=[2,0],buH=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bux=b(Be),buy=b("CollateralDeuxiemeTroisiemeDegre"),buz=b(A6),buB=[1,0],buC=[2,0],buD=[0,0],buA=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'Parente.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'Parente.t'")],but=b("GardeAlterneeCoefficientPriseEnCharge"),buu=b("PasDeGardeAlternee"),buw=[0,0],buv=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],bup=b(ig),buq=b("DemandeurOuConjointOuParentOuViaPartsSocietes"),bus=[1,0],bur=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'ParentOuAutre.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buc=b("AllocationAdulteHandicape"),bud=b(CI),bue=b("AllocationSoutienEnfantHandicape"),buf=b(iR),bug=b(U),buh=b(qp),buj=[1,0],buk=[0,0],bul=[3,0],bum=[4,0],bun=[2,0],buo=[5,0],bui=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'PrestationRecue.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],bt9=b(kV),bt_=b(o5),bua=[0,0],bub=[1,0],bt$=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bt0=b(Ch),bt1=b("ObjectifDecenceLogement"),bt2=b(or),bt3=b("PrevuDansListeR321_15"),bt5=[1,0],bt6=[3,0],bt7=[0,0],bt8=[2,0],bt4=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],btT=b(or),btU=b(w7),btV=b("TravauxSurLogementDejaAcquisD832_15_2"),btX=[1,0],btY=[0,0],btZ=[2,0],btW=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],btO=b(qq),btP=b(xv),btR=[1,0],btS=[0,0],btQ=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TitulairePret.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],btD=b(ig),btE=b(Bv),btF=b(z4),btG=b(xt),btH=b(Aa),btJ=[3,0],btK=[1,0],btL=[2,0],btM=[0,0],btN=[4,0],btI=[0,[11,b(bf),[2,0,[11,b("' kind for the enumeration 'TypePret.t'"),0]]],b("Unexpected '%s' kind for the enumeration 'TypePret.t'")],btB=[0,b(Fq),b(zx),b(EN),b(AW),b(xc),b(o0),b(f8),b(AV),b(yY),b(vs),b(Dw),b(yq),b(A7),b(yz),b(E_),b(C2),b(Bz),b(zn),b(F0),b(BU),b(vi),b(wW),b(AX),b(u5)],btC=[0,b(f8),b(AW),b(C2),b(Bz),b(zn),b(xc),b(vi),b(EN),b(vs),b(AV),b(F0),b(A7),b(Dw),b(yz),b(AX),b(zx),b(yq),b(BU),b(u5),b(wW),b(yY),b(Fq),b(E_),b(o0)],bxX=b("AidesLogementLib"),bxZ=b(ae);function +bL(b){if(typeof +b==="number")return 0;else +switch(b[0]){case +0:return[0,bL(b[1])];case +1:return[1,bL(b[1])];case +2:return[2,bL(b[1])];case +3:return[3,bL(b[1])];case +4:return[4,bL(b[1])];case +5:return[5,bL(b[1])];case +6:return[6,bL(b[1])];case +7:return[7,bL(b[1])];case +8:var +d=b[1];return[8,d,bL(b[2])];case +9:var +c=b[1];return[9,c,c,bL(b[3])];case +10:return[10,bL(b[1])];case +11:return[11,bL(b[1])];case +12:return[12,bL(b[1])];case +13:return[13,bL(b[1])];default:return[14,bL(b[1])]}}function +cI(b,c){if(typeof +b==="number")return c;else +switch(b[0]){case +0:return[0,cI(b[1],c)];case +1:return[1,cI(b[1],c)];case +2:return[2,cI(b[1],c)];case +3:return[3,cI(b[1],c)];case +4:return[4,cI(b[1],c)];case +5:return[5,cI(b[1],c)];case +6:return[6,cI(b[1],c)];case +7:return[7,cI(b[1],c)];case +8:var +d=b[1];return[8,d,cI(b[2],c)];case +9:var +e=b[2],f=b[1];return[9,f,e,cI(b[3],c)];case +10:return[10,cI(b[1],c)];case +11:return[11,cI(b[1],c)];case +12:return[12,cI(b[1],c)];case +13:return[13,cI(b[1],c)];default:return[14,cI(b[1],c)]}}function +bE(b,c){if(typeof +b==="number")return c;else +switch(b[0]){case +0:return[0,bE(b[1],c)];case +1:return[1,bE(b[1],c)];case +2:var +d=b[1];return[2,d,bE(b[2],c)];case +3:var +e=b[1];return[3,e,bE(b[2],c)];case +4:var +f=b[3],a=b[2],g=b[1];return[4,g,a,f,bE(b[4],c)];case +5:var +h=b[3],i=b[2],j=b[1];return[5,j,i,h,bE(b[4],c)];case +6:var +k=b[3],l=b[2],m=b[1];return[6,m,l,k,bE(b[4],c)];case +7:var +n=b[3],o=b[2],p=b[1];return[7,p,o,n,bE(b[4],c)];case +8:var +q=b[3],r=b[2],s=b[1];return[8,s,r,q,bE(b[4],c)];case +9:var +t=b[1];return[9,t,bE(b[2],c)];case +10:return[10,bE(b[1],c)];case +11:var +u=b[1];return[11,u,bE(b[2],c)];case +12:var +v=b[1];return[12,v,bE(b[2],c)];case +13:var +w=b[2],x=b[1];return[13,x,w,bE(b[3],c)];case +14:var +y=b[2],z=b[1];return[14,z,y,bE(b[3],c)];case +15:return[15,bE(b[1],c)];case +16:return[16,bE(b[1],c)];case +17:var +A=b[1];return[17,A,bE(b[2],c)];case +18:var +B=b[1];return[18,B,bE(b[2],c)];case +19:return[19,bE(b[1],c)];case +20:var +C=b[2],D=b[1];return[20,D,C,bE(b[3],c)];case +21:var +E=b[1];return[21,E,bE(b[2],c)];case +22:return[22,bE(b[1],c)];case +23:var +F=b[1];return[23,F,bE(b[2],c)];default:var +G=b[2],H=b[1];return[24,H,G,bE(b[3],c)]}}function +pp(b,d,c){return b[1]===d?(b[1]=c,1):0}function +aH(b){throw[0,lb,b]}function +b$(b){throw[0,sR,b]}var +sS=[bn,GQ,c9(0)];function +jz(b){return 0<=b?b:-b|0}var +sX=ju(GS),sY=ju(GT),GR=r9,GV=ju(GU);function +bV(e,d){var +b=aK(e),f=aK(d),c=b_(b+f|0);eW(e,0,c,0,b);eW(d,0,c,b,f);return cV(c)}function +GW(b){return b?GX:GY}byD(0);var +G1=Gx(1),eg=Gx(2);function +G2(c){function +b(c){var +b=c;for(;;){if(b){var +d=b[2],e=b[1];try{eY(e)}catch(b){b=p(b);if(b[1]!==sV)throw b;var +f=b}var +b=d;continue}return 0}}return b(byE(0))}function +jA(c,b){return sF(c,b,0,aK(b))}function +sZ(b){jA(eg,b);Gy(eg,10);return eY(eg)}var +ps=[0,G2];function +G4(d){for(;;){var +b=ps[1],e=[0,1],c=1-pp(ps,b,function(b,c){return function(e){if(pp(b,1,0))r(d,0);return r(c,0)}}(e,b));if(c)continue;return c}}function +pt(b){return r(ps[1],0)}sI(b(uZ),pt);var +jB=(4*byN(0)|0)-1|0;function +s0(b){if(0<=b&&!(m1>>0))f=1}else +if(65<=e)f=1}else{var +a=0;if(32!==e)if(43<=e)switch(e+Ax|0){case +5:if(b<(d+2|0)&&1>>0){if(33>>0)p=1}else +if(2===n)p=1;if(!p){var +j=j+1|0;continue}var +f=f$(k),b=[0,0],t=dG(f)-1|0,y=0;if(!(t<0)){var +i=y;for(;;){var +a=o8(f,i),g=0;if(32<=a){var +l=a-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<=a){if(13===a)g=1}else +if(8<=a)g=1;switch(g){case +0:var +m=4;break;case +1:var +m=2;break}b[1]=b[1]+m|0;var +B=i+1|0;if(t!==i){var +i=B;continue}break}}if(b[1]===dG(f)){var +r=dG(f),s=b_(r);fm(f,0,s,0,r);var +v=s}else{var +c=b_(b[1]);b[1]=0;var +u=dG(f)-1|0,z=0;if(!(u<0)){var +h=z;for(;;){var +d=o8(f,h),e=0;if(35<=d)if(92===d)e=2;else +if(ho<=d)e=1;else +e=3;else +if(32<=d)if(34<=d)e=2;else +e=3;else +if(14<=d)e=1;else +switch(d){case +8:bU(c,b[1],92);b[1]++;bU(c,b[1],98);break;case +9:bU(c,b[1],92);b[1]++;bU(c,b[1],bp);break;case +10:bU(c,b[1],92);b[1]++;bU(c,b[1],h$);break;case +13:bU(c,b[1],92);b[1]++;bU(c,b[1],zk);break;default:e=1}switch(e){case +1:bU(c,b[1],92);b[1]++;bU(c,b[1],48+(d/cj|0)|0);b[1]++;bU(c,b[1],48+((d/10|0)%10|0)|0);b[1]++;bU(c,b[1],48+(d%10|0)|0);break;case +2:bU(c,b[1],92);b[1]++;bU(c,b[1],d);break;case +3:bU(c,b[1],d);break}b[1]++;var +A=h+1|0;if(u!==h){var +h=A;continue}break}}var +v=c}var +o=cV(v)}var +w=aK(o),x=gd(w+2|0,34);eW(o,0,x,1,w);return cV(x)}}function +ta(e,a){var +g=jz(a),f=I8[1];switch(e[2]){case +0:var +c=CB;break;case +1:var +c=fI;break;case +2:var +c=69;break;case +3:var +c=cG;break;case +4:var +c=71;break;case +5:var +c=f;break;case +6:var +c=dP;break;case +7:var +c=72;break;default:var +c=70}var +d=s8(16);gY(d,37);switch(e[1]){case +0:break;case +1:gY(d,43);break;default:gY(d,32)}if(8<=e[2])gY(d,35);gY(d,46);cu(d,b(ae+g));gY(d,c);return s_(d)}function +lj(m,b){if(13<=m){var +g=[0,0],h=aK(b)-1|0,n=0;if(!(h<0)){var +d=n;for(;;){if(!(9>>0))g[1]++;var +q=d+1|0;if(h!==d){var +d=q;continue}break}}var +i=g[1],j=b_(aK(b)+((i-1|0)/3|0)|0),k=[0,0],e=function(b){js(j,k[1],b);k[1]++;return 0},f=[0,((i-1|0)%3|0)+1|0],l=aK(b)-1|0,o=0;if(!(l<0)){var +c=o;for(;;){var +a=dq(b,c);if(9>>0)e(a);else{if(0===f[1]){e(95);f[1]=3}f[1]+=-1;e(a)}var +p=c+1|0;if(l!==c){var +c=p;continue}break}}return cV(j)}return b}function +I9(c,d){switch(c){case +1:var +b=Ij;break;case +2:var +b=Ik;break;case +4:var +b=Im;break;case +5:var +b=In;break;case +6:var +b=Io;break;case +7:var +b=Ip;break;case +8:var +b=Iq;break;case +9:var +b=Ir;break;case +10:var +b=Is;break;case +11:var +b=It;break;case +0:case +13:var +b=Ii;break;case +3:case +14:var +b=Il;break;default:var +b=Iu}return lj(c,pa(b,d))}function +I_(c,d){switch(c){case +1:var +b=IJ;break;case +2:var +b=IK;break;case +4:var +b=IM;break;case +5:var +b=IN;break;case +6:var +b=IO;break;case +7:var +b=IP;break;case +8:var +b=IQ;break;case +9:var +b=IR;break;case +10:var +b=IS;break;case +11:var +b=IT;break;case +0:case +13:var +b=II;break;case +3:case +14:var +b=IL;break;default:var +b=IU}return lj(c,pa(b,d))}function +I$(c,d){switch(c){case +1:var +b=IW;break;case +2:var +b=IX;break;case +4:var +b=IZ;break;case +5:var +b=I0;break;case +6:var +b=I1;break;case +7:var +b=I2;break;case +8:var +b=I3;break;case +9:var +b=I4;break;case +10:var +b=I5;break;case +11:var +b=I6;break;case +0:case +13:var +b=IV;break;case +3:case +14:var +b=IY;break;default:var +b=I7}return lj(c,pa(b,d))}function +Ja(c,d){switch(c){case +1:var +b=Iw;break;case +2:var +b=Ix;break;case +4:var +b=Iz;break;case +5:var +b=IA;break;case +6:var +b=IB;break;case +7:var +b=IC;break;case +8:var +b=ID;break;case +9:var +b=IE;break;case +10:var +b=IF;break;case +11:var +b=IG;break;case +0:case +13:var +b=Iv;break;case +3:case +14:var +b=Iy;break;default:var +b=IH}return lj(c,byq(b,d))}function +e1(d,i,c){function +j(e){switch(d[1]){case +0:var +b=45;break;case +1:var +b=43;break;default:var +b=32}return byn(c,i,b)}function +q(d){var +b=o9(c);return 3===b?c<0.?Jc:Jd:4<=b?Je:d}switch(d[2]){case +5:var +f=sy(ta(d,i),c),e=0,u=aK(f);for(;;){if(e===u)var +p=0;else{var +k=bK(f,e)-46|0,l=0;if(23>>0){if(55===k)l=1}else +if(21>>0)l=1;if(!l){var +e=e+1|0;continue}var +p=1}var +v=p?f:bV(f,Jb);return q(v)}case +6:return j(0);case +7:var +h=f$(j(0)),a=dG(h);if(0===a)var +o=h;else{var +m=b_(a),n=a-1|0,r=0;if(!(n<0)){var +b=r;for(;;){var +g=o8(h,b),s=25>>0?g:g+Ah|0;bU(m,b,s);var +t=b+1|0;if(n!==b){var +b=t;continue}break}}var +o=m}return cV(o);case +8:return q(j(0));default:return sy(ta(d,i),c)}}function +lk(a,f,e,g,d,c,b){if(typeof +g==="number"){if(typeof +d==="number")return d?function(g,d){return a_(a,[4,f,gZ(g,aE(c,b,d))],e)}:function(d){return a_(a,[4,f,aE(c,b,d)],e)};var +k=d[1];return function(d){return a_(a,[4,f,gZ(k,aE(c,b,d))],e)}}else{if(0===g[0]){var +h=g[2],i=g[1];if(typeof +d==="number")return d?function(g,d){return a_(a,[4,f,da(i,h,gZ(g,aE(c,b,d)))],e)}:function(d){return a_(a,[4,f,da(i,h,aE(c,b,d))],e)};var +l=d[1];return function(d){return a_(a,[4,f,da(i,h,gZ(l,aE(c,b,d)))],e)}}var +j=g[1];if(typeof +d==="number")return d?function(h,g,d){return a_(a,[4,f,da(j,h,gZ(g,aE(c,b,d)))],e)}:function(g,d){return a_(a,[4,f,da(j,g,aE(c,b,d))],e)};var +m=d[1];return function(g,d){return a_(a,[4,f,da(j,g,gZ(m,aE(c,b,d)))],e)}}}function +pB(f,e,d,b,c){if(typeof +b==="number")return function(b){return a_(f,[4,e,r(c,b)],d)};else{if(0===b[0]){var +a=b[2],g=b[1];return function(b){return a_(f,[4,e,da(g,a,r(c,b))],d)}}var +h=b[1];return function(a,b){return a_(f,[4,e,da(h,a,r(c,b))],d)}}}function +jZ(e,x,w,v){var +c=x,b=w,d=v;for(;;)if(typeof +d==="number")return r(c,b);else +switch(d[0]){case +0:var +y=d[1];return function(d){return a_(c,[5,b,d],y)};case +1:var +z=d[1];return function(d){var +f=0;if(40<=d)if(92===d)var +e=G6;else +if(ho<=d)f=1;else +f=2;else +if(32<=d)if(39<=d)var +e=G7;else +f=2;else +if(14<=d)f=1;else +switch(d){case +8:var +e=G8;break;case +9:var +e=G9;break;case +10:var +e=G_;break;case +13:var +e=G$;break;default:f=1}switch(f){case +1:var +a=b_(4);bU(a,0,92);bU(a,1,48+(d/cj|0)|0);bU(a,2,48+((d/10|0)%10|0)|0);bU(a,3,48+(d%10|0)|0);var +e=cV(a);break;case +2:var +g=b_(1);bU(g,0,d);var +e=cV(g);break}var +h=aK(e),i=gd(h+2|0,39);eW(e,0,i,1,h);return a_(c,[4,b,cV(i)],z)};case +2:var +A=d[2],B=d[1];return pB(c,b,A,B,function(b){return b});case +3:return pB(c,b,d[2],d[1],Ih);case +4:return lk(c,b,d[4],d[2],d[3],I9,d[1]);case +5:return lk(c,b,d[4],d[2],d[3],I_,d[1]);case +6:return lk(c,b,d[4],d[2],d[3],I$,d[1]);case +7:return lk(c,b,d[4],d[2],d[3],Ja,d[1]);case +8:var +g=d[4],h=d[3],i=d[2],a=d[1];if(typeof +i==="number"){if(typeof +h==="number")return h?function(e,d){return a_(c,[4,b,e1(a,e,d)],g)}:function(d){return a_(c,[4,b,e1(a,pz(a),d)],g)};var +S=h[1];return function(d){return a_(c,[4,b,e1(a,S,d)],g)}}else{if(0===i[0]){var +l=i[2],m=i[1];if(typeof +h==="number")return h?function(e,d){return a_(c,[4,b,da(m,l,e1(a,e,d))],g)}:function(d){return a_(c,[4,b,da(m,l,e1(a,pz(a),d))],g)};var +T=h[1];return function(d){return a_(c,[4,b,da(m,l,e1(a,T,d))],g)}}var +n=i[1];if(typeof +h==="number")return h?function(f,e,d){return a_(c,[4,b,da(n,f,e1(a,e,d))],g)}:function(e,d){return a_(c,[4,b,da(n,e,e1(a,pz(a),d))],g)};var +U=h[1];return function(e,d){return a_(c,[4,b,da(n,e,e1(a,U,d))],g)}}case +9:return pB(c,b,d[2],d[1],GW);case +10:var +b=[7,b],d=d[1];continue;case +11:var +b=[2,b,d[1]],d=d[2];continue;case +12:var +b=[3,b,d[1]],d=d[2];continue;case +13:var +C=d[3],D=d[2],o=s8(16);pA(o,D);var +u=s_(o);return function(d){return a_(c,[4,b,u],C)};case +14:var +E=d[3],F=d[2];return function(e){var +f=e[1],d=bx(f,bL(b5(F)));if(typeof +d[2]==="number")return a_(c,b,bE(d[1],E));throw cl};case +15:var +G=d[1];return function(e,d){return a_(c,[6,b,function(b){return aE(e,b,d)}],G)};case +16:var +H=d[1];return function(d){return a_(c,[6,b,d],H)};case +17:var +b=[0,b,d[1]],d=d[2];continue;case +18:var +k=d[1];if(0===k[0]){var +I=d[2],J=k[1][1],K=0,c=function(c,d,e){return function(b){return a_(d,[1,c,[0,b]],e)}}(b,c,I),b=K,d=J;continue}var +L=d[2],M=k[1][1],N=0,c=function(c,d,e){return function(b){return a_(d,[1,c,[1,b]],e)}}(b,c,L),b=N,d=M;continue;case +19:throw[0,bo,Jg];case +20:var +O=d[3],P=[8,b,Jh];return function(b){return a_(c,P,O)};case +21:var +Q=d[2];return function(d){return a_(c,[4,b,pa(Ji,d)],Q)};case +22:var +R=d[1];return function(d){return a_(c,[5,b,d],R)};case +23:var +f=d[2],j=d[1];if(typeof +j==="number")switch(j){case +0:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +1:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +2:throw[0,bo,Jj];default:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f])}else +switch(j[0]){case +0:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +1:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +2:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +3:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +4:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +5:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +6:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +7:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +8:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);case +9:var +t=j[2];return e<50?qo(e+1|0,c,b,t,f):cs(qo,[0,c,b,t,f]);case +10:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f]);default:return e<50?bs(e+1|0,c,b,f):cs(bs,[0,c,b,f])}default:var +p=d[3],q=d[1],s=r(d[2],0);return e<50?qn(e+1|0,c,b,p,q,s):cs(qn,[0,c,b,p,q,s])}}function +qo(f,e,d,b,c){if(typeof +b==="number")return f<50?bs(f+1|0,e,d,c):cs(bs,[0,e,d,c]);else +switch(b[0]){case +0:var +a=b[1];return function(b){return ds(e,d,a,c)};case +1:var +g=b[1];return function(b){return ds(e,d,g,c)};case +2:var +h=b[1];return function(b){return ds(e,d,h,c)};case +3:var +i=b[1];return function(b){return ds(e,d,i,c)};case +4:var +j=b[1];return function(b){return ds(e,d,j,c)};case +5:var +k=b[1];return function(b){return ds(e,d,k,c)};case +6:var +l=b[1];return function(b){return ds(e,d,l,c)};case +7:var +m=b[1];return function(b){return ds(e,d,m,c)};case +8:var +n=b[2];return function(b){return ds(e,d,n,c)};case +9:var +o=b[3],p=b[2],q=ca(b5(b[1]),p);return function(b){return ds(e,d,cI(q,o),c)};case +10:var +r=b[1];return function(f,b){return ds(e,d,r,c)};case +11:var +s=b[1];return function(b){return ds(e,d,s,c)};case +12:var +t=b[1];return function(b){return ds(e,d,t,c)};case +13:throw[0,bo,Jk];default:throw[0,bo,Jl]}}function +bs(e,c,f,b){var +d=[8,f,Jm];return e<50?jZ(e+1|0,c,d,b):cs(jZ,[0,c,d,b])}function +qn(g,c,f,b,e,d){if(e){var +h=e[1];return function(e){return Jf(c,f,b,h,r(d,e))}}var +a=[4,f,d];return g<50?jZ(g+1|0,c,a,b):cs(jZ,[0,c,a,b])}function +a_(b,c,d){return sL(jZ(0,b,c,d))}function +ds(b,c,d,e){return sL(qo(0,b,c,d,e))}function +Jf(b,c,d,e,f){return sL(qn(0,b,c,d,e,f))}function +e2(c,f){var +b=f;for(;;)if(typeof +b==="number")return 0;else +switch(b[0]){case +0:var +a=b[1],g=s$(b[2]);e2(c,a);return jA(c,g);case +1:var +d=b[2],e=b[1];if(0===d[0]){var +h=d[1];e2(c,e);jA(c,Jn);var +b=h;continue}var +i=d[1];e2(c,e);jA(c,Jo);var +b=i;continue;case +6:var +l=b[2];e2(c,b[1]);return r(l,c);case +7:e2(c,b[1]);return eY(c);case +8:var +m=b[2];e2(c,b[1]);return b$(m);case +2:case +4:var +j=b[2];e2(c,b[1]);return jA(c,j);default:var +k=b[2];e2(c,b[1]);return Gy(c,k)}}function +e3(c,f){var +b=f;for(;;)if(typeof +b==="number")return 0;else +switch(b[0]){case +0:var +a=b[1],g=s$(b[2]);e3(c,a);return ct(c,g);case +1:var +d=b[2],e=b[1];if(0===d[0]){var +h=d[1];e3(c,e);ct(c,Jp);var +b=h;continue}var +i=d[1];e3(c,e);ct(c,Jq);var +b=i;continue;case +6:var +l=b[2];e3(c,b[1]);return ct(c,r(l,0));case +7:var +b=b[1];continue;case +8:var +m=b[2];e3(c,b[1]);return b$(m);case +2:case +4:var +j=b[2];e3(c,b[1]);return ct(c,j);default:var +k=b[2];e3(c,b[1]);return bw(c,k)}}function +Jr(b){if(sK(b,Js))return Jt;var +e=aK(b);function +a(e){var +d=Ju[1],c=jG(fR);return r(a_(function(b){e3(c,b);return aH(jH(c))},0,d),b)}function +g(f){var +c=f;for(;;){if(c===e)return c;var +d=bK(b,c);if(9!==d&&32!==d)return c;var +c=c+1|0;continue}}function +m(f,d){var +c=d;for(;;){if(c===e)return c;if(25>>0)return c;var +c=c+1|0;continue}}function +n(g,a){var +c=a;for(;;){if(c===e)return c;var +d=bK(b,c),f=0;if(48<=d){if(!(58<=d))f=1}else +if(45===d)f=1;if(f){var +c=c+1|0;continue}return c}}var +f=g(0),j=m(f,f),c=gV(b,f,j-f|0),d=g(j),h=n(d,d);if(d===h)var +i=0;else +try{var +o=pe(gV(b,d,h-d|0)),i=o}catch(b){b=p(b);if(b[1]!==lb)throw b;var +i=a(0)}if(g(h)!==e)a(0);var +l=0;if(M(c,Jv)&&M(c,Jw))var +k=M(c,Jx)?M(c,Jy)?M(c,Jz)?M(c,JA)?a(0):1:2:3:0;else +l=1;if(l)var +k=4;return[0,i,k]}function +tb(e,d){var +b=d[1],c=0;return a_(function(b){e2(e,b);return 0},c,b)}function +jJ(b){return tb(eg,b)}function +aI(c){var +b=c[1];return a_(function(c){var +b=jG(64);e3(b,c);return jH(b)},0,b)}var +pC=[0,0];function +pE(h,g){var +b=h[1+g];if(1-(typeof +b==="number"?1:0)){if(pj(b)===j$)return r(aI(JB),b);if(pj(b)===rf){var +d=sy(G0,b),c=0,a=aK(d);for(;;){if(a<=c)return bV(d,GZ);var +e=bK(d,c),f=0;if(48<=e){if(!(58<=e))f=1}else +if(45===e)f=1;if(f){var +c=c+1|0;continue}return d}}return JC}return r(aI(JD),b)}function +tc(c,b){if(c.length-1<=b)return JE;var +d=tc(c,b+1|0),e=pE(c,b);return aE(aI(JF),e,d)}function +pF(b){function +n(f){var +c=f;for(;;){if(c){var +a=c[2],g=c[1];try{var +e=0,d=r(g,b);e=1}catch(a){}if(e&&d)return[0,d[1]];var +c=a;continue}return 0}}var +g=n(pC[1]);if(g)return g[1];if(b===pq)return JK;if(b===sU)return JL;if(b[1]===sT){var +d=b[2],h=d[3],o=d[2],p=d[1];return lR(aI(pD),p,o,h,h+5|0,JM)}if(b[1]===bo){var +e=b[2],i=e[3],q=e[2],s=e[1];return lR(aI(pD),s,q,i,i+6|0,JN)}if(b[1]===sW){var +f=b[2],j=f[3],t=f[2],u=f[1];return lR(aI(pD),u,t,j,j+6|0,JO)}if(0===pj(b)){var +a=b.length-1,v=b[1][1];if(2>>0)var +k=tc(b,2),l=pE(b,1),c=aE(aI(JG),l,k);else +switch(a){case +0:var +c=JH;break;case +1:var +c=JI;break;default:var +m=pE(b,1),c=r(aI(JJ),m)}return bV(v,c)}return b[1]}function +pG(t,s){var +e=byf(s),a=e.length-1-1|0,o=0;if(!(a<0)){var +c=o;for(;;){var +b=c8(e,c)[1+c],f=function(b){return function(c){return c?0===b?JP:JQ:0===b?JR:JS}}(c);if(0===b[0])var +g=b[5],h=b[4],i=b[3],j=b[6]?JT:JV,k=b[2],l=b[7],m=f(b[1]),d=[0,bx9(aI(JU),m,l,k,j,i,h,g)];else +if(b[1])var +d=0;else +var +n=f(0),d=[0,r(aI(JW),n)];if(d){var +p=d[1];r(tb(t,JX),p)}var +q=c+1|0;if(a!==c){var +c=q;continue}break}}return 0}function +td(d){for(;;){var +b=pC[1],c=1-pp(pC,b,[0,d,b]);if(c)continue;return c}}var +JZ=JY.slice();function +J0(e,d){var +f=pF(e);r(jJ(J1),f);pG(eg,d);var +b=byC(0);if(b<0){var +c=jz(b);sZ(c8(JZ,c)[1+c])}return eY(eg)}var +J2=[0];sI(b(D7),function(e,h){try{try{var +b=h?J2:Gr(0);try{pt(0)}catch(a){}try{var +g=J0(e,b),d=g}catch(c){c=p(c);var +f=pF(e);r(jJ(J4),f);pG(eg,b);var +a=pF(c);r(jJ(J5),a);pG(eg,Gr(0));var +d=eY(eg)}var +c=d}catch(b){b=p(b);if(b!==pq)throw b;var +c=sZ(J3)}return c}catch(a){return 0}});try{var +bx5=GF(bx4),tf=bx5}catch(b){b=p(b);if(b!==dr)throw b;try{var +bx3=GF(bx2),te=bx3}catch(b){b=p(b);if(b!==dr)throw b;var +te=J6}var +tf=te}pu(tf,82);var +pH=[bn,J7,c9(0)],ll=0,tg=-1;function +jK(b,c){b[13]=b[13]+c[3]|0;return s6(c,b[28])}var +th=1000000010;function +pI(c,b){return cA(c[17],b,0,aK(b))}function +lm(b){return r(b[19],0)}function +ti(b,d,c){b[9]=b[9]-d|0;pI(b,c);b[11]=0;return 0}function +ln(d,b){var +c=M(b,J8);return c?ti(d,aK(b),b):c}function +gf(b,c,f){var +a=c[3],g=c[2];ln(b,c[1]);lm(b);b[11]=1;var +d=(b[6]-f|0)+g|0,e=b[8],h=e<=d?e:d;b[10]=h;b[9]=b[6]-b[10]|0;r(b[21],b[10]);return ln(b,a)}function +tj(c,b){return gf(c,J9,b)}function +g0(b,c){var +d=c[2],e=c[3];ln(b,c[1]);b[9]=b[9]-d|0;r(b[20],d);return ln(b,e)}function +J_(b,i,c){if(typeof +c==="number")switch(c){case +0:var +s=gX(b[3]);if(s){var +t=s[1][1],u=function(c,b){if(b){var +d=b[1],e=b[2];return Gw(c,d)?[0,c,b]:[0,d,u(c,e)]}return[0,c,0]};t[1]=u(b[6]-b[9]|0,t[1]);return 0}return 0;case +1:gW(b[2]);return 0;case +2:gW(b[3]);return 0;case +3:var +v=gX(b[2]);return v?tj(b,v[1][2]):lm(b);case +4:var +w=b[10]!==(b[6]-b[9]|0)?1:0;if(w){var +f=b[28],g=f[2];if(g){var +m=g[1];if(g[2]){var +J=g[2];f[1]=f[1]-1|0;f[2]=J;var +h=[0,m]}else{px(f);var +h=[0,m]}}else +var +h=0;if(h){var +q=h[1],L=q[1];b[12]=b[12]-q[3]|0;b[9]=b[9]+L|0;return 0}return 0}return w;default:var +x=gW(b[5]);return x?pI(b,r(b[25],x[1])):0}else +switch(c[0]){case +0:return ti(b,i,c[1]);case +1:var +d=c[2],a=c[1],y=d[1],M=d[2],z=gX(b[2]);if(z){var +A=z[1],e=A[2];switch(A[1]){case +0:return g0(b,a);case +1:return gf(b,d,e);case +2:return gf(b,d,e);case +3:return b[9]<(i+aK(y)|0)?gf(b,d,e):g0(b,a);case +4:return b[11]?g0(b,a):b[9]<(i+aK(y)|0)?gf(b,d,e):((b[6]-e|0)+M|0)>>0))tj(b,p)}else +lm(b)}var +S=b[9]-R|0,T=1===H?1:b[9]>>0)throw pS;switch(b){case +1:return c?29:28;case +3:case +5:case +8:case +10:return 30;default:return 31}}function +pU(b){try{var +c=1<=b[3]?1:0;if(c)var +e=lx(b[1]),f=ly(b[2],e),d=b[3]<=f?1:0;else +var +d=c;return d}catch(b){b=p(b);if(b===pS)return 0;throw b}}function +tF(e,d,c){var +b=[0,e,d,c];if(pU(b))return b;throw pS}function +lz(a,f,e){var +c=a,b=e;for(;;){var +d=f+b|0;if(1<=d&&!(12>b===c?d:GO(c,b)}return GO(c,b)}function +tH(b){return typeof +b==="number"?b:bzb(b)}var +e4=0,lD=1,KP=-1;function +tI(b){return gT(0,b,0,aK(b))}function +KQ(c,b){return gT(c,b,0,aK(b))}function +pV(b){if(typeof +b==="number")return b;var +f=sO(b);if(63>g;a=1}if(!a)var +d=by$(b,c);var +i=byY(b,fs(d,c)),e=po(d),h=i?e:byx(e,KR);return pg(pd(h),c)}return pd(po(b))}function +g2(b,c){if(b!==0&&c!==1){var +d=by1(b,c);if(d===1)return[0,b,c];var +e=tG(c,d);return[0,tG(b,d),e]}return[0,b,lD]}function +tJ(c,b){var +d=c_(b);if(0===d)return[0,c_(c),e4];if(0>>0))switch(c){case +0:return 2;case +1:break;default:return 1}return 3}return b[1]===0?0:4}function +pW(e,d){var +f=gh(e),c=gh(d),b=0;switch(f){case +1:var +j=c-1|0;if(!(2>>0))switch(j){case +0:b=2;break;case +1:break;default:b=1}break;case +2:if(1===c)b=1;else +if(c)switch(c-2|0){case +1:b=1;break;case +2:break;default:b=2}break;case +3:if(3!==c)return-1;b=2;break;default:b=1}var +k=0;switch(b){case +1:var +i=c-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<=f))switch(f){case +0:break;case +2:g=1;break;default:g=2}var +h=0;switch(g){case +0:if(2!==c){if(a(e[2],d[2]))return ef(e[1],d[1]);var +l=cJ(d[1],e[2]);return ef(cJ(e[1],d[2]),l)}h=1;break;case +1:break;default:h=1}if(h)return 1}return-1}function +tM(b){var +c=b[2];return[0,gg(b[1]),c]}function +tN(d,b,c){if(b[2]===c[2]){var +e=b[2];return g2(aE(d,b[1],c[1]),e)}var +f=cJ(b[2],c[2]),a=cJ(c[1],b[2]);return g2(aE(d,cJ(b[1],c[2]),a),f)}function +jO(c,b){if(c[2]!==0&&b[2]!==0){var +d=cJ(c[2],b[2]);return g2(cJ(c[1],b[1]),d)}return[0,jv(c_(c[1]),c_(b[1])),e4]}function +pX(c,b){if(0<=c_(b[1]))return jO(c,[0,b[2],b[1]]);var +d=gg(b[1]);return jO(c,[0,gg(b[2]),d])}function +pY(b){switch(b){case +0:return 2;case +1:return 8;case +2:return 10;default:return 16}}function +pZ(f,e,d,c){var +b=e;for(;;){if(d<=b)return 0;if(r(c,bK(f,b)))return[0,b];var +b=b+1|0;continue}}function +KU(b){if(M(b,KV)){if(M(b,KW)){if(!M(b,KX))return lF;if(M(b,KY)){if(M(b,KZ))try{var +r=Hj(b,47),X=gT(0,b,r+1|0,(aK(b)-r|0)-1|0),Y=tJ(gT(0,b,0,r),X);return Y}catch(r){r=p(r);if(r===dr){var +i=aK(b),x=0;if(i<1)var +s=[0,0,x];else{var +N=bK(b,0)+Ax|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 +d=s[2];if(i<(d+2|0))var +t=[0,2,d];else{var +W=bK(b,d),g=bK(b,d+1|0),q=0;if(48===W){var +h=0;if(89<=g){if(98===g)h=2;else +if(kZ===g)h=1;else +if(du!==g){q=1;h=3}}else +if(66===g)h=2;else +if(79===g)h=1;else +if(!(88<=g)){q=1;h=3}switch(h){case +3:break;case +0:var +o=[0,3,d+2|0];break;case +1:var +o=[0,1,d+2|0];break;default:var +o=[0,0,d+2|0]}}else +q=1;if(q)var +o=[0,2,d];var +t=o}var +e=t[2],c=t[1],S=2===c?function(b){if(69!==b&&fI!==b)return 0;return 1}:3<=c?function(b){if(80!==b&&kY!==b)return 0;return 1}:function(b){return 0},y=pZ(b,e,i,S);if(y)var +z=y[1],A=z+1|0,f=z,B=tH(gT(10,b,A,i-A|0));else +var +f=i,B=0;if(2<=c){var +C=pZ(b,e,f,function(b){return 46===b?1:0});if(C){var +u=C[1];if(2===c)var +D=1;else{if(!(3<=c))throw[0,bo,K1];var +D=4}var +F=u+1|0,G=f-1|0,E=0;if(G>>4|0));bw(b,tP(f&15));d[1]=c+1|0;break}}var +j=c+1|0;if(g!==c){var +c=j;continue}break}}K8(e,d,b);return bw(b,34)}function +tQ(b,c){return ct(b,Lf)}function +tR(c,b){var +d=b?Lg:Lh;return ct(c,d)}function +p0(c,b){return 0===b?0:(p0(c,b/10|0),bw(c,s0(jz(b%10|0)+48|0)))}function +tS(c,b){return 0 Date: Tue, 14 Mar 2023 13:40:44 +0100 Subject: [PATCH 2/4] Build: enforce "release" profile for website-assets but make sure to keep a consistent dune profile otherwise for `make all`, avoiding multiple rebuilds. This saves 30s CPU time on a `make all` that doesn't specify `DUNE_PROFILE=release` --- Makefile | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ab414c5e..54abf508 100644 --- a/Makefile +++ b/Makefile @@ -246,7 +246,7 @@ build_french_law_library_ocaml: dune build $(FRENCH_LAW_OCAML_LIB_DIR)/api.a run_french_law_library_benchmark_ocaml: - dune exec --profile release $(FRENCH_LAW_OCAML_LIB_DIR)/bench.exe + dune exec $(FRENCH_LAW_OCAML_LIB_DIR)/bench.exe run_french_law_library_ocaml_tests: dune exec $(FRENCH_LAW_OCAML_LIB_DIR)/law_source/unit_tests/run_tests.exe @@ -277,7 +277,7 @@ run_french_law_library_benchmark_js: build_french_law_library_js #> build_french_law_library_js : Builds the JS version of the OCaml French law library build_french_law_library_js: - dune build $(FRENCH_LAW_JS_LIB_DIR)/french_law.js --profile=release + dune build $(FRENCH_LAW_JS_LIB_DIR)/french_law.js #> build_french_law_library_web_api : Builds the web API of the French law library build_french_law_library_web_api: build_french_law_library_js generate_french_law_json_schemas @@ -356,10 +356,13 @@ WEBSITE_ASSETS = grammar.html catala.html clerk.html catala_legifrance.html $(addprefix _build/default/,$(WEBSITE_ASSETS)): dune build $@ -#> website-assets : Builds all the assets necessary for the Catala website -website-assets: build_french_law_library_web_api doc literate_examples build +website-assets-base: build_french_law_library_web_api doc literate_examples build dune build $(WEBSITE_ASSETS) +#> website-assets : Builds all the assets necessary for the Catala website +website-assets: + $(MAKE) DUNE_PROFILE=release website-assets-base + ########################################## # Misceallenous ########################################## @@ -376,7 +379,7 @@ all: \ bench_js \ generate_french_law_library_python type_french_law_library_python \ bench_python \ - website-assets + website-assets-base #> clean : Clean build artifacts @@ -417,4 +420,5 @@ help_catala_legifrance: run_french_law_library_benchmark_python \ run_french_law_library_benchmark_js run_french_law_library_ocaml_tests \ build_french_law_library_js build_french_law_library_web_api \ - build_french_law_library_ocaml + build_french_law_library_ocaml \ + website-assets website-assets-base From abc5a00c2fb36622f25d92781fa3b91a598dd8f4 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Tue, 14 Mar 2023 16:57:14 +0100 Subject: [PATCH 3/4] Compile LaTeX code using minted without the Python venv This is a hack, but not a dirty one: a new command `catala pygmentize` is added, which is just a wrapper around `pygmentize` that calls it with the proper lexers defined. The point is that this needs no installation, just a stock `pygmentize` installation and the `catala` binary. --- INSTALL.md | 7 ++-- compiler/catala_utils/cli.ml | 4 ++ compiler/driver.ml | 4 ++ compiler/literate/literate_common.ml | 21 ++++++----- compiler/literate/literate_common.mli | 4 ++ compiler/literate/pygmentize.ml | 54 +++++++++++++++++++++++++++ compiler/literate/pygmentize.mli | 19 ++++++++++ doc/syntax/syntax_en.tex | 2 + doc/syntax/syntax_fr.tex | 2 + 9 files changed, 104 insertions(+), 13 deletions(-) create mode 100644 compiler/literate/pygmentize.ml create mode 100644 compiler/literate/pygmentize.mli diff --git a/INSTALL.md b/INSTALL.md index ec25ac4a..e10ff1a3 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -72,11 +72,10 @@ Next, install all the packages that Catala depends on with make dependencies This should ensure everything is set up for developing on the Catala compiler! + The Python dependencies are installed inside a local virtual environment -(`venv`). The Makefile rules will use it automatically when building the syntax -cheat-sheet, for example, but if you need to otherwise colorise Catala code, or -use generated Python code, you should run the following command once in every -new shell session: +(`venv`). To use it, for example to run Python code generated by Catala, you +should run the following command once in every new shell session: . _python_venv/bin/activate diff --git a/compiler/catala_utils/cli.ml b/compiler/catala_utils/cli.ml index bf177021..b00d5f26 100644 --- a/compiler/catala_utils/cli.ml +++ b/compiler/catala_utils/cli.ml @@ -378,6 +378,10 @@ let info = "Prints a debugging verbatim of the statement calculus intermediate \ representation of the Catala program. Use the $(b,-s) option to \ restrict the output to a particular scope." ); + `I + ( "$(b,pygmentize)", + "This special command is a wrapper around the $(b,pygmentize) \ + command that enables support for colorising Catala code." ); `S Manpage.s_authors; `P "The authors are listed by alphabetical order."; `P "Nicolas Chataing "; diff --git a/compiler/driver.ml b/compiler/driver.ml index c72fb3c1..a29f4e5c 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -403,6 +403,10 @@ let driver source_file (options : Cli.options) : int = -1 let main () = + if + Array.length Sys.argv >= 2 + && String.lowercase_ascii Sys.argv.(1) = "pygmentize" + then Literate.Pygmentize.exec (); let return_code = Cmdliner.Cmd.eval' (Cmdliner.Cmd.v Cli.info (Cli.catala_t (fun f -> driver (FileName f)))) diff --git a/compiler/literate/literate_common.ml b/compiler/literate/literate_common.ml index e089f07a..278c529b 100644 --- a/compiler/literate/literate_common.ml +++ b/compiler/literate/literate_common.ml @@ -125,6 +125,16 @@ let check_exceeding_lines "%s" String.(sub s max_len (len_s - max_len))))) +let with_pygmentize_lexer lang f = + let lexer_py = + let lexer_fname = "lexer_" ^ Cli.language_code lang ^ ".py" in + match Pygment_lexers.read lexer_fname with + | None -> failwith "Pygments lexer not found for this language" + | Some lexer -> lexer + in + File.with_temp_file "pygments_lexer_" ".py" ~contents:lexer_py + @@ fun pyg_lexer -> f ["-l"; pyg_lexer; "-x"] + let call_pygmentize ?lang args = let cmd = "pygmentize" in let check_exit n = @@ -137,12 +147,5 @@ let call_pygmentize ?lang args = match lang with | None -> File.process_out ~check_exit cmd args | Some lang -> - let lexer_py = - let lexer_fname = "lexer_" ^ Cli.language_code lang ^ ".py" in - match Pygment_lexers.read lexer_fname with - | None -> failwith "Pygments lexer not found for this language" - | Some lexer -> lexer - in - File.with_temp_file "pygments_lexer_" ".py" ~contents:lexer_py - @@ fun pyg_lexer -> - File.process_out ~check_exit cmd ("-l" :: pyg_lexer :: "-x" :: args) + with_pygmentize_lexer lang + @@ fun lex_args -> File.process_out ~check_exit cmd (lex_args @ args) diff --git a/compiler/literate/literate_common.mli b/compiler/literate/literate_common.mli index 4164a2fa..f7f62194 100644 --- a/compiler/literate/literate_common.mli +++ b/compiler/literate/literate_common.mli @@ -51,3 +51,7 @@ val call_pygmentize : ?lang:Cli.backend_lang -> string list -> string (** Calls the [pygmentize] command with the given arguments, and returns the results as a string. If [lang] is specified, the proper arguments for the Catala lexer are already passed. *) + +val with_pygmentize_lexer : Cli.backend_lang -> (string list -> 'a) -> 'a +(** Creates the required lexer file and returns the corresponding [pygmentize] + command-line arguments *) diff --git a/compiler/literate/pygmentize.ml b/compiler/literate/pygmentize.ml new file mode 100644 index 00000000..c7e002b5 --- /dev/null +++ b/compiler/literate/pygmentize.ml @@ -0,0 +1,54 @@ +(* This file is part of the Catala compiler, a specification language for tax + and social benefits computation rules. Copyright (C) 2020 Inria, contributor: + Louis Gesbert + + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy of + the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under + the License. *) + +open Catala_utils +open Literate_common + +let lang_of_ext s = + if String.starts_with ~prefix:"catala_" s then + match s with + | "catala_en" -> Some Cli.En + | "catala_fr" -> Some Cli.Fr + | "catala_pl" -> Some Cli.Pl + | _ -> failwith "Unknown Catala dialect" + else None + +let exec () = + let args = List.tl (Array.to_list Sys.argv) in + let rec find_lang acc = function + | "-l" :: lang :: r -> Some lang, List.rev_append acc r + | x :: r -> find_lang (x :: acc) r + | [] -> None, List.rev acc + in + let lang, args = find_lang [] args in + let catala_lang = + match lang with + | Some l -> lang_of_ext l + | None -> + List.find_map + (fun s -> + match Filename.extension s with + | "" -> None + | e -> lang_of_ext (String.sub e 1 (String.length e - 1))) + args + in + match catala_lang with + | None -> Unix.execvp "pygmentize" (Array.of_list args) + | Some lang -> + with_pygmentize_lexer lang + @@ fun lex_args -> + Unix.execvp "pygmentize" + (Array.of_list (("pygmentize" :: lex_args) @ List.tl args)) diff --git a/compiler/literate/pygmentize.mli b/compiler/literate/pygmentize.mli new file mode 100644 index 00000000..ca0ed472 --- /dev/null +++ b/compiler/literate/pygmentize.mli @@ -0,0 +1,19 @@ +(* This file is part of the Catala compiler, a specification language for tax + and social benefits computation rules. Copyright (C) 2020 Inria, contributor: + Louis Gesbert + + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy of + the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under + the License. *) + +val exec : unit -> unit +(** Wrapper around the [pygmentize] binary with support for Catala. Reads the + arguments directly from Sys.argv *) diff --git a/doc/syntax/syntax_en.tex b/doc/syntax/syntax_en.tex index 7fbce6b0..df32c3ac 100644 --- a/doc/syntax/syntax_en.tex +++ b/doc/syntax/syntax_en.tex @@ -26,6 +26,8 @@ \setlist[itemize]{noitemsep, topsep=0pt} +\renewcommand{\MintedPygmentize}{../../_build/default/compiler/catala.exe pygmentize} + % backquote dejavu fix \makeatletter \chardef\straightquote@code=\catcode`' diff --git a/doc/syntax/syntax_fr.tex b/doc/syntax/syntax_fr.tex index 7aec5a4b..ee0a5100 100644 --- a/doc/syntax/syntax_fr.tex +++ b/doc/syntax/syntax_fr.tex @@ -26,6 +26,8 @@ \setlist[itemize]{noitemsep, topsep=0pt} +\renewcommand{\MintedPygmentize}{../../_build/default/compiler/catala.exe pygmentize} + % backquote dejavu fix \makeatletter \chardef\straightquote@code=\catcode`' From ebf957008d29bd8f60c608ad7417fb412229fdce Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Tue, 14 Mar 2023 17:24:29 +0100 Subject: [PATCH 4/4] Makefile: loading venv is no longer required for most rules --- Makefile | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 54abf508..6f410c40 100644 --- a/Makefile +++ b/Makefile @@ -52,9 +52,6 @@ $(PY_VENV_DIR)/stamp: \ -e syntax_highlighting/pl/pygments touch $@ -# Run sub-make within the Python venv -MAKEP = $(PY_VENV_ACTIVATE) $(MAKE) - dependencies-python: $(PY_VENV_DIR) #> dependencies : Install the Catala OCaml, JS and Git dependencies @@ -171,7 +168,7 @@ vscode: vscode_fr vscode_en ########################################## syntax: - $(MAKEP) -C doc/syntax + $(MAKE) -C doc/syntax ########################################## # Literate programming and examples @@ -187,32 +184,32 @@ TUTORIEL_FR_DIR=$(EXAMPLES_DIR)/tutoriel_fr POLISH_TAXES_DIR=$(EXAMPLES_DIR)/polish_taxes literate_aides_logement: build $(PY_VENV_DIR) - $(MAKEP) -C $(AIDES_LOGEMENT_DIR) aides_logement.tex - $(MAKEP) -C $(AIDES_LOGEMENT_DIR) aides_logement.html + $(MAKE) -C $(AIDES_LOGEMENT_DIR) aides_logement.tex + $(MAKE) -C $(AIDES_LOGEMENT_DIR) aides_logement.html literate_allocations_familiales: build - $(MAKEP) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.tex - $(MAKEP) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.html + $(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.tex + $(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.html literate_code_general_impots: build - $(MAKEP) -C $(CODE_GENERAL_IMPOTS_DIR) code_general_impots.tex - $(MAKEP) -C $(CODE_GENERAL_IMPOTS_DIR) code_general_impots.html + $(MAKE) -C $(CODE_GENERAL_IMPOTS_DIR) code_general_impots.tex + $(MAKE) -C $(CODE_GENERAL_IMPOTS_DIR) code_general_impots.html literate_us_tax_code: build - $(MAKEP) -C $(US_TAX_CODE_DIR) us_tax_code.tex - $(MAKEP) -C $(US_TAX_CODE_DIR) us_tax_code.html + $(MAKE) -C $(US_TAX_CODE_DIR) us_tax_code.tex + $(MAKE) -C $(US_TAX_CODE_DIR) us_tax_code.html literate_tutorial_en: build - $(MAKEP) -C $(TUTORIAL_EN_DIR) tutorial_en.tex - $(MAKEP) -C $(TUTORIAL_EN_DIR) tutorial_en.html + $(MAKE) -C $(TUTORIAL_EN_DIR) tutorial_en.tex + $(MAKE) -C $(TUTORIAL_EN_DIR) tutorial_en.html literate_tutoriel_fr: build - $(MAKEP) -C $(TUTORIEL_FR_DIR) tutoriel_fr.tex - $(MAKEP) -C $(TUTORIEL_FR_DIR) tutoriel_fr.html + $(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.tex + $(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.html literate_polish_taxes: build - $(MAKEP) -C $(POLISH_TAXES_DIR) polish_taxes.tex - $(MAKEP) -C $(POLISH_TAXES_DIR) polish_taxes.html + $(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.tex + $(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.html #> literate_examples : Builds the .tex and .html versions of the examples code. Needs pygments to be installed and patched with Catala. literate_examples: literate_allocations_familiales literate_code_general_impots \ @@ -301,10 +298,10 @@ generate_french_law_library_python: #> type_french_law_library_python : Types the French law library Python sources with mypy type_french_law_library_python: $(PY_VENV_DIR) generate_french_law_library_python - $(MAKEP) -C $(FRENCH_LAW_PYTHON_LIB_DIR) type + $(PY_VENV_ACTIVATE) $(MAKE) -C $(FRENCH_LAW_PYTHON_LIB_DIR) type run_french_law_library_benchmark_python: $(PY_ENV_DIR) type_french_law_library_python - $(MAKEP) -C $(FRENCH_LAW_PYTHON_LIB_DIR) bench + $(PY_VENV_ACTIVATE) $(MAKE) -C $(FRENCH_LAW_PYTHON_LIB_DIR) bench ########################################## # High-level test and benchmarks commands